上一篇文章讲述了一个服务如何从配置中心读取文件,配置中心如何从远程git 或 本地读取配置文件,当服务实例很多时,都从配置中心读取文件,这时可以考虑将配置中心做成一个微服务,将其集群化,从而达到高可用,架构图如下:
一、准备工作
继续使用前面文章的工程(注册中心 leopard-eureka 、服务 leopard-service、配置中心 leopard-config)。
修改 leopard-service 的 bootstrap.properties 配置文件
#服务名称
spring.application.name=leopard-service
#指明远程仓库的分支
spring.cloud.config.label=master
#环境配置文件 dev-开发 test-测试 pro-正式
spring.cloud.config.profile=dev
#指明配置服务中心的网址
#spring.cloud.config.uri= http://localhost:8881/
#是否从配置中心读取文件
spring.cloud.config.discovery.enabled=true
#配置中心的servieId,即服务名
spring.cloud.config.discovery.serviceId=leopard-config
这时发现,在读取配置文件不再写ip地址,而是服务名,这时如果配置服务部署多份,通过负载均衡,从而高可用。(跟测试之前的 fegin 差不多)
二、运行测试
依次启动leopard-eureka、leopard-config、leopard-service
访问注册中心:http://localhost:8761/
访问服务:http://localhost:8081/test/getName
hi leopard,this name is :leopardName
说明不需要通过 IP:port 访问配置中心,可以通过服务名访问获取信息。
只要配置中心配置统一服务名,端口不同依旧可以访问到配置,实现高可用。