二、Spring Cloud Config配置中心

Spring Cloud Config配置中心

1.创建Spring Cloud Config配置中心服务

1.1.选用阿里云仓库,需要集成注册中心客户端和配置中心服务端的能力,需要引入cloud config,eureka client依赖,等待完成项目构建。(全量配置)

<dependency>
	<-- Cloud Config配置中心服务依赖 -->
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
	<-- Eureka注册中心客户端依赖 -->
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

1.2.如果没有/resources/application.yml文件需自行创建。(全量配置)

server:
  port: 9700 #本项目服务端口
spring:
  application:
    name: configuration-center-server #设置服务名称
  cloud:
    config:
      server:
        git:
          uri: https://gitee.com/xxxxxx/xxxxxx.git #设置远端gitee仓库地址
          default-label: master #默认分支路径
          search-paths: config1 #设置获取文件路径
          username: xxxxxx #账号
          password: xxxxxx  #密码
eureka:
  instance:
    prefer-ip-address: true #将hostname:port变为ip:port
    instance-id: server:${server.port}  #注册中心页面显示服务:server:port
  client:
    service-url:
      defaultZone: http://localhost:9800/eureka/,http://localhost:9801/eureka/,http://localhost:9802/eureka/  #将配置中心服务注册到注册中心

1.3.启动分类增加注解@EnableConfigServer,表示启动Spring-Cloud-Config。

2.Eureka注册中心配置修改

2.1.上篇文章的Eureka注册中心,也需要集成配置中心客户端的能力,添加依赖。(全量配置)

<dependency>
	<-- Eureka注册中心服务依赖 -->
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<dependency>
	<-- Config配置中心客户端依赖 -->
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-client</artifactId>
</dependency>
<dependency>
	<-- Cloud Config在2020之后还需引入bootstrap依赖 -->
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>

2.2.将application.yml文件信息放入远端,如gitee,具体配置如下registry-center-config-prd.yml。(全量配置)

spring:
  application:
    name: registry-center-server  #统一的项目名称
eureka:
  instance:
    prefer-ip-address: true #将hostname:port变为ip:port
    instance-id: server:${server.port} #统一服务显示的名称:server:9800
  client:
    register-with-eureka: true #是否向Eureka服务端注册自己
    fetch-registry: true #是否从Eureka服务端获取服务注册表
    service-url:
      defaultZone: http://localhost:9800/eureka,http://localhost:9801/eureka,http://localhost:9802/eureka #【高可用配置,可以配置不同Ip地址下的注册中心相互注册,但存在一个问题,指定IP后DS Replicas会失效】

2.3.新建bootstrap.yml文件,它优先于application.yml执行,可读取远端配置信息,具体配置如下,高可用配置只需要给服务修改不同的端口就可以,具体有几个注册中心可以在远端配置具体的地址信息。(全量配置)

server:
  port: 9800 #本项目服务端口
spring:
  application:
    name: registry-center-config  #从配置中心获取信息(1):registry-center-config-prd.yml
  cloud:
    config:
      profile: prd  #从配置中心获取信息(2):registry-center-config-prd.yml
      discovery:
        enabled: true #启动配置的发现
        service-id: configuration-center-server #这里需要与配置中心服务名称一致
  config:
    import: optional:configserver:http://localhost:9700 #指定配置中心地址

2.4.启动类增加注解@EnableEurekaServer,表示启动Eureka。

3.Eureka公共服务类配置修改

3.1.上篇文章的Eureka服务类,也需要集成配置中心客户端和配置修改后自动更新的能力,添加依赖。(全量配置)

<dependency>
	<-- Web依赖 -->
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
	<-- Eureka注册中心客户端依赖 -->
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
	<-- Config配置中心客户端依赖 -->
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-client</artifactId>
</dependency>
<dependency>
	<-- Cloud Config在2020之后还需引入bootstrap依赖 -->
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<dependency>
	<-- 配置更新依赖 -->
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

3.2.将application.yml文件信息放入远端,如gitee,具体配置如下common-config-prd.yml。(全量配置)

spring:
  application:
    name: common-server #项目名称
eureka:
  instance:
    prefer-ip-address: true #将hostname:port变为ip:port
    instance-id: server:${server.port} #注册中心页面显示服务:server:port
  client:
    service-url:
      defaultZone: http://localhost:9800/eureka/,http://localhost:9801/eureka/,http://localhost:9802/eureka/

3.3.新建bootstrap.yml文件,它优先于application.yml执行,可读取远端配置信息,具体配置如下,高可用配置只需要给服务修改不同的端口就可以,具体有几个注册中心可以在远端配置具体的地址信息。(全量配置)

server:
  port: 9600 #默认端口号
spring:
  application:
    name: product-config #从配置中心获取信息(1):product-config-prd.yml
  cloud:
    config:
      profile: prd #从配置中心获取信息(2):registry-center-config-prd.yml
      discovery:
        enabled: true #启动配置的发现
        service-id: configuration-center-server #这里需要与配置中心服务名称一致
  config:
    import: optional:configserver:http://localhost:9700 #指定配置中心地址
management:
  endpoints:
    web:
      exposure:
        include: refresh #刷新配置

3.4.服务类增加注解@RefreshScope,表示该类配置信息修改时需要被更新。
3.5.需要gitee的管理中配置WebHooks:刷新地址:http://localhost:9600/actuator/refresh的POST请求,本地可以使用内网穿透工具验证:ngrok工具。