为什么要配置多个Eureka Server

我们可以想下,在实际项目中,不可能只存在一台Eureka Server,个人建议生产环境至少2台Eureka Server,因为一台的风险就是它挂了,你的整个分布式系统都挂了。

接下来我们看两幅图

观察我们发现图一为Eureka Server相互注册,图二为Eureka Server两两注册,这样依次类推,我们就可以部署多台Eureka Server。

所谓相互注册就是Eureka Server1注册了Eureka Server2,Eureka Server2注册了Eureka Server1可以理解成相互关联。

接下来我直接演示两两注册,就是三个Eureka Server怎么使用,不要问我为啥不写相互注册。

配置多个Eureka Server

这里本来想使用改变端口的方式,不建3个Eureka Server服务项目,可能有些童鞋不太明白怎么操作,算了吧,我还是建三个Eureka Server项目吧。。。。无奈

我们之前已经创建了一个Eureka Server项目,我们在依次类推创建2个

Eureka Server1的application.yml配置

eureka:
client:
service-url:
defaultZone: http://localhost:8762/eureka/,http://localhost:8763/eureka/
register-with-eureka: false
spring:
application:
name: eureka
server:
port: 8761

Eureka Server2的application.yml配置

eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/,http://localhost:8763/eureka/
register-with-eureka: false
spring:
application:
name: eureka
server:
port: 8762

Eureka Server3的application.yml配置

eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/
register-with-eureka: false
spring:
application:
name: eureka
server:
port: 8763

Eureka Client的application.yml配置

eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/,http://localhost:8763/eureka/
spring:
application:
name: client

观察我们不难发现Eureka Server端就是设置服务注册地址(defaultZone)的时候不添加自己本身地址,添加其他Eureka服务端的地址,Eureka Client直接填写3个服务端的地址

然后启动Eureka Server3个端,在启动Eureka Client

访问服务端我们可以看到三个都能看到客户端

现在我们断掉其中任何一台服务端都不会影响整个系统的工作,Eureka Server1挂了还有Eureka Server2,Eureka Server3工作。

Eureka总结

    1、@EnableEurekaServer:用于服务端,提供服务注册的功能 ,各个服务启动后会在Eureka Server中进行注册,这样就有了所有节点(客户端)的信息。

          @EnableDiscoveryClient:用于客户端。

    2、心跳检测,健康检查,负载均衡等功能。

    3、Eureka的高可用,Eureka Server生成环境建议2台及以上。

    4、分布式系统中,服务注册中心是最重要的基础部分。