6_config分布式配置中心

前言

代码仍是使用以前的代码,若是须要完整代码,请拉倒文章底部获取java

一、新建工程config-server

1.一、添加pom依赖

<dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-config-server</artifactId>
      </dependency>
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>

   <groupId>com.didispace</groupId>
   <artifactId>config-server</artifactId>
   <version>1.0.0</version>
   <packaging>jar</packaging>

   <name>config-server</name>
   <description>Spring Cloud project</description>

   <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>1.3.7.RELEASE</version>
      <relativePath/> <!-- lookup parent from repository -->
   </parent>

   <properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <java.version>1.8</java.version>
   </properties>

   <dependencies>

      <dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-config-server</artifactId>
      </dependency>

   </dependencies>

   <dependencyManagement>
      <dependencies>
         <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Brixton.SR5</version>
            <type>pom</type>
            <scope>import</scope>
         </dependency>
      </dependencies>
   </dependencyManagement>
   
   <build>
      <plugins>
         <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
         </plugin>
      </plugins>
   </build>

</project>

1.二、注解添加分布式配置服务端支持

@EnableConfigServer
@SpringBootApplication
public class Application {

   public static void main(String[] args) {
      new SpringApplicationBuilder(Application.class).web(true).run(args);
   }

}

二、第一种:咱们以github仓库为例进行讲解

2.一、建立github仓库SpringcloudConfig

2.1.一、其根目录下同时建立文件夹respo

2.1.二、该文件夹下建立配置文件 命名规则 :自定义项目名称-profile.properties,分别写入内容

from=git-dev-1.0
from=git-prod-1.0
from=git-test-1.0
from=git-default-1.0

ZldYLKEr3bpm4NJT

2.二、配置工程的配置文件,添加git仓库的属性,

spring.application.name=config-server
server.port=7001

# git仓库
spring.cloud.config.server.git.uri=https://github.com/HealerJean/SpringcloudConfig/
spring.cloud.config.server.git.searchPaths=respo
spring.cloud.config.label=master
#公开仓库不须要写用户名和密码,若是是私有仓库则须要些用户名和密码
spring.cloud.config.server.git.username=
spring.cloud.config.server.git.password=

2.三、测试启动这个项目7001端口

浏览器访问http://localhost:7001/didispace/prod/master //+分支名称git

解释:妈的,竟然真的有显示,证实配置服务中心能够从远程程序获取配置信息。

name:应用名称 didispace
label 表示分支名称 master
version 表示git上对应的版本号

{
	"name": "didispace",
	"profiles": ["prod"],
	"label": "master",
	"version": "68a075d11aea67d4989989c70152a9ac53367e82", 
	"propertySources": [{
		"name": "https://github.com/HealerJean123/SpringcloudConfig/respo/didispace-prod.properties",
		"source": {
			"from": "git-prod-1.0"
		}
	}, {
		"name": "https://github.com/HealerJean123/SpringcloudConfig/respo/didispace.properties",
		"source": {
			"from": "git-default-1.0"
		}
	}]
}

2.四、http请求地址和资源文件映射以下:

•	/{application}/{profile}[/{label}] 上上面的连接http://localhost:7001/didispace/prod/master
•	/{application}-{profile}.yml
•	/{label}/{application}-{profile}.yml
•	/{label}/{application}-{profile}.properties 

•	/{application}-{profile}.properties  http://localhost:7001/didispace-dev.properties

oaE4F5rxWSK3ki8q

三、客户端映射

3.一、建立工程config-client,pom.xml以下

<dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-starter-config</artifactId>
      </dependency>
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>

   <groupId>com.didispace</groupId>
   <artifactId>config-client</artifactId>
   <version>1.0.0</version>
   <packaging>jar</packaging>

   <name>config-client</name>
   <description>Spring Cloud project</description>

   <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>1.3.7.RELEASE</version>
      <relativePath/> <!-- lookup parent from repository -->
   </parent>

   <properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <java.version>1.8</java.version>
   </properties>

   <dependencies>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
      </dependency>

      <dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-starter-config</artifactId>
      </dependency>
   </dependencies>

   <dependencyManagement>
      <dependencies>
         <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Brixton.SR5</version>
            <type>pom</type>
            <scope>import</scope>
         </dependency>
      </dependencies>
   </dependencyManagement>
   
   <build>
      <plugins>
         <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
         </plugin>
      </plugins>
   </build>

</project>

3.二、建立bootstrap.properties,来获取配置文件config-server的位置

server.port=7002

spring.application.name=didispace
spring.cloud.config.profile=dev
spring.cloud.config.label=master
spring.cloud.config.uri=http://localhost:7001/

3.三、建立controller开始测试,经过后台的from(只要在配置文件中,其实都是from)

**@RefreshScope**spring-cloud 实现更新配置不用重启服务 @FreshScopegithub

@RefreshScope
@RestController
public class TestController {

    @Value("${from}")
    private String from;

    @RequestMapping("/from")
    public String from() {
        return this.from;
    }

}

3.四、浏览器访问 http://localhost:7002/from

ZoPcnfHkL2m3TXyA

四、添加Eurake服务注册中心

使用以前的注册中心 1111web

4.一、配置config-server

4.1.一、添加eurake依赖包

<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>

4.1.二、启用注册发现,和配置服务注册地址

@EnableDiscoveryClient
@EnableConfigServer
@SpringBootApplication
public class Application {

   public static void main(String[] args) {
      new SpringApplicationBuilder(Application.class).web(true).run(args);
   }

}

4.1.三、指定注册中心

#eurake
#指定服务注册中心
eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/

4.二、配置config-client

4.2.一、添加eurake依赖包

<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>

4.2.二、启用注册发现

@EnableDiscoveryClient
@SpringBootApplication
public class Application {

   public static void main(String[] args) {
      new SpringApplicationBuilder(Application.class).web(true).run(args);
   }
}

4.2.三、配置服务注册中心和服务端的config

server.port=7002
spring.application.name=didispace


spring.cloud.config.enabled=true
spring.cloud.config.discovery.service-id=CONFIG-SERVER
spring.cloud.config.profile=dev

4.2.四、开始测试,成功

HealerJean-代码下载

五、项目实战中的config

5.一、新建项目sso-config

5.1.一、添加pom依赖

<dependencies>
      <dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-config-server</artifactId>
      </dependency>
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>

   <groupId>com.carl.auth</groupId>
   <artifactId>sso-config</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <packaging>jar</packaging>

   <name>sso-config</name>
   <description>Demo project for Spring Boot</description>

   <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>1.5.10.RELEASE</version>
      <relativePath/> <!-- lookup parent from repository -->
   </parent>

   <properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
      <java.version>1.8</java.version>
      <spring-cloud.version>Edgware.SR2</spring-cloud.version>
   </properties>

   <dependencies>
      <dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-config-server</artifactId>
      </dependency>

      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-test</artifactId>
         <scope>test</scope>
      </dependency>
   </dependencies>

   <dependencyManagement>
      <dependencies>
         <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
         </dependency>
      </dependencies>
   </dependencyManagement>

   <build>
      <plugins>
         <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
         </plugin>
      </plugins>
   </build>


</project>

5.1.二、添加配置管理器支持注解

@EnableConfigServer
@SpringBootApplication
public class SsoConfigApplication {

   public static void main(String[] args) {
      SpringApplication.run(SsoConfigApplication.class, args);
   }
}

5.1.三、编辑config服务端配置文件

server:
  #服务端口
  port: 8888
  #访问路径
  context-path: /config
  
#指定日志输出文件
logging:
  file: "logs/sso-config.log"
info:
  name : "配置中心"

---

spring:
  profiles:
    #本地配置文件
    active:
      #配置文件本地化
      - native
application:
    #指定应用名称
    name: sso-config

5.1.四、运行这个spring boot项目,浏览器访问 http://localhost:8888/config/ 说明下面的启动成功

pX6QROsIqT4lMgLe

5.1.五、配置中心的位置,建立resource 下建立config文件夹,建立sso-dev.propetries 编辑配置文件

一、上面咱们提到配置是放置于配置中心,而不放在服务内
二、因为配置是放在与本地,那么spring的默认配置在目录为resources/config

写入内容spring

hello_key=value

h0WCGlpbKfAJZEqk

5.1.六、从新启动spring boot项目,访问 http://localhost:8888/config/sso/dev

E5Xazs9mMYUiudtq

name:应用名称 sso -dev.properties配置文件的名称
label 表示分支名称 master
version 表示git上对应的版本号
{
	"name": "sso",
	"profiles": ["dev"],
	"label": null,
	"version": null,
	"state": null,
	"propertySources": [{
		"name": "classpath:/config/sso-dev.properties",
		"source": {
			"hello_key": "value"
		}
	}]
}

5.二、接入客户端

#指定日志文件
logging.file=logs/cas.log
info.name=单点登陆系统

#定义application.name的id
spring.application.name=sso
#寻找配置中心为sso-dev.properties
spring.profiles.active=dev
#指定配置中心地址
spring.cloud.config.uri=http://localhost:8888/config
#开启配置中心
spring.cloud.config.enabled=true
#支持自动任务去配置中心刷新配置
spring.cloud.config.watch.enabled=true
#30秒刷新一次
spring.cloud.config.watch.initialDelay=30000
#请求配置中心超市
spring.cloud.config.watch.delay=1000
#检查配置健康
health.config.enabled=true





感兴趣的,欢迎添加博主微信,

哈,博主很乐意和各路好友交流,若是满意,请打赏博主任意金额,感兴趣的在微信转帐的时候,备注您的微信或者其余联系方式。添加博主微信哦。


请下方留言吧。可与博主自由讨论哦apache

微信 微信公众号 支付宝
微信 微信公众号 支付宝
相关文章
相关标签/搜索