File tree Expand file tree Collapse file tree 1 file changed +22
-0
lines changed
Expand file tree Collapse file tree 1 file changed +22
-0
lines changed Original file line number Diff line number Diff line change @@ -60,5 +60,27 @@ Nacos支持两种方式的注册中心,持久化和非持久化存储服务信
6060
6161Nacos同时支持持久化和非持久化存储,也就是支持CAP原则中的AP和CP特性,Nacos的CP支持持久化和ZK模式类似。Nacos默认采用AP非持久化,非持久化使用内存存储性能更快,而且Hash分片存储,不利点就是某个服务挂点,可能出现部分部分时间点用失败。因为服务调用本身就是实时的,持久化存储起来意义不大,而且及时变化更合适。
6262
63+ #### HashiCorp Consul -> CP
64+
65+ Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置。Consul使用Go编写,因此具有天然的移植性。
66+ Consul内置了服务注册与发现框架、分布式一致性协议实现、健康检查、Key/Value存储、多数据中心方案。
67+
68+ Consul遵循CAP原理中的CP原则,保证了强一致性和分区容错性,且使用的是Raft算法,比Zookeeper使用的Paxos算法更加简单。虽然保证了强一致性,但是可用性就下降了,例如服务注册的时间会稍微长一些,因为Consul的Raft协议要求必须过半数的节点都写入成功才算成功,在Leader挂掉了之后,重新选出Leader之前会导致Consul不可用。
69+
70+ Consul Template
71+ Consul 默认服务调用者需要依赖Consul SDK来发现服务,这就无法保证对应用的零入侵性。
72+ 通过Consul Template,可以定时从Consul集群获取最新的服务提供者列表并刷新Load Balance配置,这样对于服务调用者来说,只需要配置一个统一的服务调用地址即可。
73+
74+ Consul强一致性(C)带来的是:
75+ > - 服务注册相比Eureka会稍慢一些,因为Consul的Raft协议要求必须半数节点都写入成功才算注册成功;
76+ > - Leader挂掉时,重新选举期间整个Consul不可用,保证了强一致性但是牺牲了可用性;
77+
78+ Eureka保证高可用(A)和最终一致性:
79+ > - 服务注册相对要快,因为不需要注册信息replicate到其他节点,也不保证注册信息是否replicate成功;
80+ > - 当数据存在不一致时,虽然A,B上注册的信息不相同,但是每个Eureka节点依然能够正常的对外提供服务,这会出现查询服务信息时如果A查不到,但请求B就能查的到,保证了可用性但牺牲了一致性;
81+
82+ 另一方面,Eureka就是个Servlet程序,跑到Servlet容器中。Consul则是go编写而成。
83+
84+
6385
6486
You can’t perform that action at this time.
0 commit comments