SpringCloud Eureka(注册中心集群)

时间:2023-12-23 19:20:43

多个注册中心,其实用不同的配置对应 不同的端口号注册就行了。

注册中心自己也是个服务,看看之前的单个注册中心是怎么样的呢?

server:
port: 8888 # 服务端口
eureka:
instance:
hostname: localhost # 设置主机名
client:
registerWithEureka: false # 是否向 Eureka 注册服务。该应用为服务注册中心,不需要自注册,设置为 false
fetchRegistry: false # 是否检索服务。该应用为服务注册中心,职责为注册和发现服务,无需检索服务,设置为 false
server:
waitTimeInMsWhenSyncEmpty: 0 # 设置同步为空时的等待时间。默认 5 * MINUTES
那么多个改怎么弄呢,你看上面有设置不允许自己注册自己,所有多个注册中心A和B....就应该相互注册

那就看看配置吧,

application.yml

spring:
profiles:
active: mars-8764 #按-后缀默认启动
application:
name: eureka-rigister-server
application-mars-8763.yml

server:
port: 8763 # 服务端口

eureka:
instance:
hostname: 127.0.0.1 # 设置主机名
client:
service-url:
defaultZone: http://${eureka.instance.hostname}:8764/eureka/
register-with-eureka: false # 是否向 Eureka 注册服务。该应用为服务注册中心,不需要自注册,设置为 false
fetch-registry: false # 是否检索服务。该应用为服务注册中心,职责为注册和发现服务,无需检索服务,设置为 false
application-mars-8764.yml

server:
port: 8764

eureka:
instance:
hostname: 127.0.0.1
client:
service-url:
defaultZone: http://${eureka.instance.hostname}:8763/eureka/
register-with-eureka: false
fetch-registry: false
你们看,默认启动mars-8764,所以jar install两次,修改active: mars-8764 为active: mars-8763再启动一次,这样就同时启动了2个注册中心,他们的之间维护的服务清单和实例会相互同步。

那么消费者的配置也得向多个注册中心注册,并且一个注册中心挂了,不会影响程序运行,这样可以实现注册中心集群

server:
port: 8765
eureka:
client:
serviceUrl:
defaultZone: http://127.0.0.1:8763/eureka/,http://127.0.0.1:8764/eureka/
#(注册中心地址,如果多个注册中心用逗号拼接,具体可以查源码)

spring:
application:
name: service-biz //服务名称 yml配置文件语法是不是跟最近流行Python的语法很相似
现在我们的服务注册中心和服务的消费者提供者都有了,其中服务发现由EureKa客户端完成,而服务消费有Ribbon完成,Ribbon是一个基于HTTP和TCP的客户端负载均衡器,通过轮询访问服务端列表实现负载聚会的,下一小节我们会具体介绍。