Eureka介绍:
Eureka是一个服务注册中心,它将所有可以提供的服务都注册到它这里进行一个管理,其他调用者需要调用的时候,就从这个服务中心去获取,然后进行调用,这样就可以很好的避免了服务之间的一个直接调用问题,以及后续的一个扩展,故障转移等。服务中心这么重要的组件,一旦挂掉了将会影响全部的服务,项目中一般搭建Eureka集群来保证他的一个高可用性,一般使用多个节点的方式
Eureka原理:
原理就是当服务启动后,向Eureka进行注册,Eureka Server会将注册消息向其他的Eureka Server进行同步,当服务消费者需要调用服务提供者时,会向注册中心获取服务提供者的地址,然后将地址缓存到本地,下次调用的时候,直接从本地缓存中去取,完成一次调用,当注册中心检测到服务提供者宕机或者网络不可用的时候,会向订阅者发布服务提供者的状态,订阅过的服务消费者会更新本地缓存。
Eureka与Zookeeper的区别:
同作为服务中心,它们之间的区别要从这个CAP理论说起,C是一致性,A是可用性,P是分区容错性,作为分布式系统,分区容错性是一定存在的,但是我们不能同时拥有C跟A。所以Zookeeper保证的是CP,Eureka保证的AP
Eureka如何保证可用性:
Eureka有多个节点,它们各个节点都是平等的,当其他有几个节点挂掉之后不会影响其他正常节点的工作,剩下的节点依旧可以提供注册服务和查询服务,只要有一台Eureka存在,就能保证服务的可用,只不过不能保证查询的信息是最新的,也就是说Eureka不能保证它的一个一致性,而且就是Eurake有一个自我保护机制,就是心跳机制,比如在15分钟内有超过85%的节点心跳停止了,Eureka就会认为客户端与注册中心出现了问题,它就会剔除掉那些心跳停止的服务,其他节点依旧可以提供注册和查询服务,直到稳定后,才会同步到其他节点,保证它的一个可用性,而Zookeeper是直接整个瘫痪掉来保证它的一个一致性