eureka

Eureka Server采用的是Peer to Peer对等通信。这是一种去中心化的架构,无master/slave区分,每一个Peer都是对等的。
在这种架构中,节点通过彼此互相注册来提高可用性,每个节点需要添加一个或多个有效的serviceUrl指向其他节点。每个节点都可被视为其他节点的副本。

Eureka注册中心的作用很大的程度是作用于服务发现服务心跳,在多个注册中心的时候,依赖于zuul的负载均衡,保证异常的服务停止,正常的服务加载,保证服务的稳定性。

Eureka能够通过心跳检查、客户端缓存等机制,确保了系统的高可用性。

默认配置,Eureka Server在90s没有得到客户端的心跳,则注销该实例,同时Eureka 有自我保护机制(防止本身不可用,而干掉可用服务),通过在Eureka Server配置参数,
可启动保护机制它的工作原理是:当Eureka Server节点在短时间内丢失过多的客户端时(可能发送了网络故障),那么这个节点将进入自我保护模式,
不再注销任何微服务,当网络故障回复后,该节点会自动退出自我保护模式。

Eureka VS Zookeeper

在CAP理论中说道,一个分布式系统不可能同时满足C(一致性)、A(可用性)和P(分区容错性)。由于分区容错性在是分布式系统中必须要保证的,因此我们只能在A和C之间进行权衡

此Zookeeper保证的是CP, 而Eureka则是AP
zookeeper:当master节点因为网络故障与其他节点失去联系时,剩余节点会重新进行leader选举。选举leader的时间太长,30 ~ 120s, 且选举期间整个zk集群都是不可用的

EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY’RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.

1
2
3
#一般出现此模式时,服务返回错误。即如果真实的服务已经Down掉,
# 但在注册中心界面服务却一直存在,且显示为UP状态,关掉自我保护模式
eureka.server.enable-self-preservation = false