💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、豆包、星火、月之暗面及文生图、文生视频 广告
![](https://img.kancloud.cn/e1/26/e1268fad2c8d29577c6aca95575f514a_760x226.png) Config Server实现高可用的原理比较简单:因为Config Server 是用Spring Boot构建的, 所以我们完全可以把它当做微服务注册到eureka,启动多个实例向eureka注册,并对外提供服务即可。 * 我们的业务服务(如aservice-sms)和Config Server都向Eureka注册,所以aservice-sms可以通过eureka获取ConfigServer服务列表 * aservice-sms通过负载均衡策略,在多个Config Server实例中选择一个作为获取配置请求的发送目标。 **所以:** * 首先我们要有eureka集群,这个搭建我们前面已经讲过 * 其次我们要调整Config Server集成eureka客户端,从而使Config Server能够作为eureka客户端服务存在,实现服务注册与发现。 * 最后我们需要调整aservice-sms(既是Config Client、又是Eureka Client),以便适应从eureka获取Config Server服务列表。 ## 一、Config Server 其实Config Server作为一个服务向eureka注册,和普通的微服务向eureka注册没有什么区别。为了加深大家印象,我就再讲一遍:要想让Config Server实现服务注册功能,首先引入spring-cloud-starter-netflix-eureka-client。 ~~~ <!-- spring cloud config 服务端包,这个包是一定存在的,否则就不是Config Server了--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency> <!-- eureka client 端包 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> ~~~ 在application.yml加入eureka相关的配置(server段和spring段的配置之前章节就存在,只有eureka段配置是新增的) ~~~ server: port: 8771 spring: application: name: zimug-server-config cloud: config: server: git: uri: https://gitee.com/hanxt/dongbb-cloud searchPaths: zimug-server-config-repo username: hanxt password: L1kv93.vi8 security: basic: enabled: true #启用基本认证(默认) user: name: zimug password: pwd123456 eureka: client: serviceUrl: register-with-eureka: true fetch-registry: true defaultZone: http://zimug:centerpwd@peer1:8761/eureka/eureka/,http://zimug:centerpwd@peer2:8761/eureka/eureka/,http://zimug:centerpwd@peer3:8761/eureka/eureka/ instance: preferIpAddress: true ~~~ 在zimug-server-config的启动类上加上`@EnableEurekaClient`注解 ![](https://img.kancloud.cn/95/47/954702d4a35494518cb0027204dc1524_817x247.png) 启动Config Server(zimug-server-config),发现其已经正确的注册到eureka服务注册中心,说明我们的配置成功。 ![](https://img.kancloud.cn/02/11/02112ebc5b52589ecd479300e5b84cee_1330x171.png) 当我们启动多个Config Server对外提供服务时,就实现了高可用。(某一个实例挂掉,其他的实例仍然可以提供Config Server服务) ## 二、 Config Client 我们的微服务客户端(如:aservice-sms和aservice-rbac)作为config client需要调整配置。 ![](https://img.kancloud.cn/a1/0e/a10e4719a03d60ee30c9fcaa8827c412_1794x709.png) * 原来直接通过URI访问config server单节点,现在调整为通过service-id到eureka注册中心发现config server服务集群。(上图红色边框部分) * 另外需要加上eureka 客户端配置(上图橘色边框部分),why?这个不是不是已经放到仓库集中统一管理了么? * 在没有实现高可用的config server之前,我们是URI直接访问config server,获取项目配置。响应结果配置中包含eureka server配置,从而微服务可以向eureka集群注册。所以eureka客户端配置**可以放在远程git仓库**。 * 现在我们为了实现高可用,把config server作为eureka client注册到eureka集群。所以我们的其他本地服务想找到configserver获取配置,**必须先找到eureka服务注册中心,才能找到Config Server**。所以eureka客户端配置**必须放在本地服务中才行**。 ![](https://img.kancloud.cn/d3/f6/d3f6ceaafa4b8edbb5c9f072d757c5e9_773x469.png)