老版的springcloud全家桶对于服务注册与发现组件,官网给出了Eureka,Zookeeper,Consul的选择,之前的博客也都做过简单的介绍,今天想分析和比较一下这三大服务注册与发现组件的异同点。
首先springcloud的出现主要是为了解决分布式服务难于治理的局面而产生的微服务架构的解决方案,做过分布式和微服务的应该都知道CAP理论(即强一致性,高可用性,分区容错性),其实CAP理论的提出关注的是数据,而不是系统设计,但是当前微服务盛行的时代,系统设计上也借鉴数据CAP理论,形成了系统设计的CAP体系,
CAP理论的三项指标,强一致性和高可用性本身是互斥的,因此在实际的业务系统中没有百分百的CAP,需要根据业务类型和需要侧重是AP还是CP的选择。
在Eureka,Zookeeper,Consul三大组件中CAP理论得到了很好的诠释,
AP(高可用性,分区容错性)Eureka
CP(强一致性,分区容错性)Zookeeper,Consul
在springcloud官网中,首推是Eureka,这跟它AP的特性有很大的关系,服务本身有注册服务的缓存,服务可用用的要求要比强一致性要求更高一些,特别是在服务特别多,集群特别大 的情况下,强一致性的维系本身会产生更大的开销和难度