简介
Eureka 是Netfix 开源的服务发现组件,本身是一个基于REST 的服务。它包含Server 和Client两部分。Spring Cloud 将他集成在子项目Spring Cloud Netfix 中,从而实现微服务的注册与发现。
关键词: REST 服务,分为Server 和Clinet。
补充:它是一个去中心化的注册与发现组件。
去中心化和中心化
何为去中心化与中心化?中心化等于有一个老大,去中心化就没有老大,人人都是老大,人人平等。
上面的图,是一个eureka 官网的架构图。里面的Eureka Server 相互复制其他节点的实例信息。当其中某个一个节点挂掉之后,或者所有Eeureka Server 节点挂掉之后(客户端会缓存服务端的实例信息),整个微服务注册发现依旧运行。这就是去中心化。
那么与之相反的中心化管理,最出名的就是Zookeeper了。Zookeeper部署集群作为注册中心的时候,当其中领导者节点挂之后,会重新选举出一个新的领导者(通过Paxos算法选举)。那么在选举的期间,整个微服务集群的注册发现不可用。这就是中心化。
去中心化和中心化的优劣
谈到中心化的优劣,就必须引入一个微服务中的核心理念:CAP帽子理论。
CAP帽子理论
C: Consistency,一致性。
A:Availability,可用性。
P:Partition tolerance,分区容忍性。尽管网络上有部分消息丢失,但系统仍然可继续工作。
CAP原理证明,任何分布式系统只可同时满足以上两点,无法三者兼顾。
Eureka = CP(任意节点挂掉之后,依旧可以正常运行)
Zookeeper = AP (领导节点挂掉之后,暂时不能运行,必须选举出新的领导)
CP的优势和劣势
优势:保持了可用性,挂掉依旧风骚运行
劣势:各个节点的信息可能会发生不一致
AP的优势和劣势
优势:保持了一致性,各个节点信息永远一致
劣势:牺牲了可用性
分布式系统具体是选择AP 还是CP ,关键看系统的本身的业务特点