两两注册的方式可以实现集群中节点完全对等的效果,实现最高可用性集群,任何一台注册中心故障都不会影响服务的注册与发现
4.4 Eureka自我保护
一句话:某时刻某一个微服务不可用了(如8001),Eureka-server不会立刻清理,依旧会对该微服务的消息进行保存。
默认情况下,如果Eureka-Server在一定时间内没有接收到某个微服务实例的心跳,如果 Eureka Server 连续 90 秒都有没有收到 Eureka Client 的续约消息(连续三次没发送),它会认为 Eureka Client 已经掉线了,会将掉线的 Eureka Client 从当前的服务注册列表中剔除。
但是当网络分区故障发生时,微服务于EurekaServer之间无法正常通信,以上行为可能变得非常危险了—因为微服务本身其实是健康的,此时本不应该注销这个微服务。Eureka通过“自我保护模式”来解决这个问题—当Eureka Server节点短时间内丢失过多客户端时(可能发送了网络分区故障),那么这个节点就会进入自我保护模式。一旦进入该模式,EurekaServer就会保护服务注册表中的消息,不再删除服务注册表的数据(也就是不会注销任何微服务)。当网络故障恢复后,该EurekaServer节点会自动退出自我保护模式。
7001 yml文件:
eureka:
server:
#关闭自我保护false(缺省true),一般不建议这么做。
enable-self-preservation: false
#续期时间,即扫描失效服务的间隔时间(缺省为90*1000ms)
eviction-interval-timer-in-ms: 10000
5. 与其他注册中心PK
后续:
Eureka闭源,目前2.0不更新
替代方案:
Nacos:阿里开源2019.6正式1.0企业级,致力于帮助您发现、配置和管理微服务.
Zookeeper:分布式协调工具,可以实现注册中心功能
consul:简化了分布式环境中的服务的注册和发现流程,通过 HTTP 或者 DNS 接口发现。
这四个组件虽然都实现了注册中心的功能,但是他们的功能和实现方式都有不同的地方,也各有各的优点,单从注册中心方面来比价四个注册中心。
功能
Eureka
Nacos
Consul
ZK
CAP定理(协议)
AP
AP(或CP)
CP
CP
负载均衡策略
Ribbon
权重/metadata/Selecto
Fabio
-
雪崩保护
有
有
无
无
SpringCloud集成
支持
支持
支持
-
多数据中心
支持
支持
支持
-