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工具。