一、AP、CP架构,脑裂问题
分区容错性
在同等的容错性下,奇数个机器要比偶数个机器更节省资源。
因为按照防止脑裂的设置,节点投票数量必须要 > 总结点数 / 2。
那么5 / 2 = 2, 6 / 2 = 3,。即5个节点最多允许挂2个,6个节点最多也允许挂2个。因为能选举出leader的前提是投票节点要超过半数节点!
为何不建议设置偶数个节点
偶数个节点比如6,如果因为网络原因分成了两个2去,每个分区3个节点,都无法超高半数节点3,那么集群将永远无法选出leader,无法对外提供服务。
二、阿里云注册中心是如何实现的(需要服务几乎整个中国的服务,可能有上百万、上千万的注册实例)?
此时AP架构已经不足以支撑了。一个节点上就要存储如此之多的数据,那每个节点之间同步数据的时候,带宽的压力该有多大?
我们自然而然的应该会马上想到分区。我们应该记得Redis的Cluster架构中的分片架构(16384个槽)。
此时我们也要将注册实例按照一定的算法分不到不同的片上,以此来达到数据分散的作用。
三、Ribbon
调用链路
源码分析