Eureka与zk的比较

ek与zk都为微服务集群提供了集群节点信息管理、统一命名服务,两者都通过集群实现了分布式CAP定理中的P——分区容错性。zk集群是主从设计,为保证数据的一致性所有的操作都由leader节点来完成,只有Leader才有写权限其它节点没有写权限,leader节点会将数据同步给其它节点,但zk并不确保所有节点都同步完成,只要过半节点同步完成即可,若zk的leader节点宕掉,zk就会触发选举,在剩余的非leader节点中选举出新的leader节点,zk的选举除了在leader节点宕机的情况下进行,在zk集群初始化时也会进行。zk就是通过Leader节点统一读写确保分布式CAP定理中的C——数据一致性,leader节点若异常,待重新选举新的leader节点才可恢复使用,所以zk是CP系统。与zk不同的是,Eureka集群的各个节点平等的,没有主从之分,所有的都拥有均衡的读写权限,Eureka-server会将单纯因为集群节点故障导致不健康的节点移除集群,若因为网络分区故障而与节点维持心跳异常,那么Eureka还可以启用自我保护机制,来保护Eureka的服务注册信息,宁可保留所有的节点信息(包括健康的和非健康的)也不盲目移除可能是健康的节点,以此来保证eureka集群的可用性和稳定性,这一点与zk为了数据的一致性而采用主从设计,异常情况下在进行主节点选举时集群不可用相比,ek选择了分布式CAP定理中的AP——可用性和分区容错性。
zk作为一个成熟的高性能的分布式服务调度框架广受欢迎,在有些应用场景中,选择zk比ek更适用。如:分布式锁、分布式队列、全局唯一ID、负载均衡、一致性的配置管理等这些可以用zk实现

猜你喜欢

转载自blog.csdn.net/feifeixiongxiong/article/details/113063281
zk