0--前言
spring cloud的服务注册中心,该选择谁?在选择前,我们首先需要来了解下分布式的CAP定理:
所谓CAP,是指:
Consistency:一致性;就是在分布式系统中的所有数据备份,在同一时刻是否同样的值
Availability:可用性;就是负载过大后,集群整体是否还能响应客户端的读写请求
Partition tolerance :分区容错性,就是高可用性;一个节点挂了,并不影响其它的节点
三者不可能同时满足,最多只能满足其中两项;
1-- eureka vs consul
在分布式系统中,P是一定要满足的,不满足P是不可接受的;那么在C一致性和A可用性之间,就存在取舍。很显然,更多时候,我们更看重A可用性,而不需要实时的一致性,只需要最终一致即可;所以,满足AP更符合绝大多数项目的实际;
Zookeeper和Consul :满足CP,保证了一致性,集群搭建的时候,某个节点失效,则会进行选举行的leader,或者半数以上节点不可用,则无法提供服务,因此可用性无法满足
Eureka:满足AP,无主从节点,一个节点挂了,自动切换其他节点可以使用,去中心化
从实际而言,一般除了一些特殊行业需要强调C一致性(例如金融、银行)以外,其他的系统更注重A可用性,所以:
2--结论:该选择谁?
我们很不喜欢那些模棱两可万金油般的的结论,对比来对比去,让大家纠结来纠结去;我们可以很明确的给你下个结论:
对于金融类似的特殊行业有C一致性的强烈需求的,用Consul ;
其他的,统统用Eureka;
PS:题外话:关于Eureka闭源,是2.X闭源,但2.X从未发布,官方最新的版本是1.9,所以不要受额外的消息影响,大胆使用合适的。
原文地址:https://www.cnblogs.com/yanghj/p/11638525.html