一、Eureka高可用机制介绍
Eureka服务器没有后端存储,但注册表中的服务实例都必须发送心跳以使其注册保持最新(因此可以在内存中完成)。 客户端还有一个Eureka注册的内存缓存(因此,他们不必为服务的每个请求转到注册表)。
默认情况下,每个Eureka服务器也是Eureka客户端,并且需要(至少一个)服务URL来定位对等体。 如果您不提供该服务,该服务将运行并正常运行,但它会在您的日志中填充很多关于无法向对等方注册的噪音。
二、实现Eureka高可用
两个缓存(客户端和服务器)和心跳的组合使得独立的Eureka服务器能够非常适应故障,只要有某种监视器或弹性运行时(例如Cloud Foundry)使其保持活动状态即可。 在独立模式下,您可能更愿意关闭客户端行为,以便它不会继续尝试并且无法访问其对等方。 以下示例显示如何关闭客户端行为:
下面看一下项目中,是如何应用的,看一下配置文件
spring: application: name: EUREKA-HA security: user: name: user password: password123 --- server: port: 8761 spring: profiles: peer1 eureka: instance: hostname: peer1 client: serviceUrl: defaultZone: http://user:password123@peer2:8762/eureka/,http://user:password123@peer3:8763/eureka/ --- server: port: 8762 spring: profiles: peer2 eureka: instance: hostname: peer2 client: serviceUrl: defaultZone: http://user:password123@peer1:8761/eureka/,http://user:password123@peer3:8763/eureka/ --- server: port: 8763 spring: profiles: peer3 eureka: instance: hostname: peer3 client: serviceUrl: defaultZone: http://user:password123@peer1:8761/eureka/,http://user:password123@peer2:8762/eureka/
idea启动配置中,做如下配置:
在系统的hosts中,增加127.0.0.1 peer1 peer2 peer3
然后启动3个项目,通过浏览器访问任意一个eureka,就可以出现如下的界面,