spring cloud 之 -- eureka vs consul,该选择谁?
程序员文章站
2022-06-04 20:36:39
0--前言 spring cloud的服务注册中心,该选择谁?在选择前,我们首先需要来了解下分布式的CAP定理: 所谓CAP,是指: Consistency:一致性;就是在分布式系统中的所有数据备份,在同一时刻是否同样的值 Availability:可用性;就是负载过大后,集群整体是否还能响应客户端 ......
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,所以不要受额外的消息影响,大胆使用合适的。