微服务体系中,注册中心是不可或缺的组件。承担了服务的管理(注册、发现)的重要职能。
市场上有很多公司使用了不同的注册中心,比如 Netflix 的 eureka、Apache 的 zk、以及国产的 Nacos。但是大家有没有想一想这三个到底哪一个更适合做注册中心。
Eureka
eureka 集群采用的是一种去中心化 peer to peer 的方式, 所有的实例都是对等的,不存在主从之分。充分保证了可用性,CAP 理论中取了 AP。
Zookeeper
zk 集群,有一个leader ,一旦 leader 宕机、或者半数以上的实例挂了,即使恢复后,也需要重新选举 leader, 在此期间集群将无法继续对外提供服务。充分保证了数据的一致性,CAP 理论中取了 CP 。
Nacos
与 eureka 保证了 AP。
虽然微服务间的服务发现,有本地缓存,即使短暂宕机、服务间仍然可以正常调用,但如果从注册中心的角度来说,必须保证高可用的。因此 Eureka、Nacos 更适合做注册中心。