CAP
微服务架构CAP
一、分布式系统CAP
C【Consistency】: 一致性,即数据一致性,特指分布式系统中的数据一致性。
A【Availability】: 可用性,即服务的高可用,特指分布式系统中的服务的高可用,某个服务瘫痪不影响整个分布式系统的正常运行。
P【Partition Tolerance】: 分区容错性(也有的叫分区耐受性),即网络故障,特指分布式系统中服务之间出现了网络故障,整个分布式系统仍然保持可用性和一致性。
总结CAP:在分布式系统中,网络故障,服务瘫痪,整个系统的数据仍然保持一致性。
二、分布式系统解决方案
2.1、AP【牺牲一致性】:保证高可用,保证分区容错,牺牲数据一致性。
解决思路:网络恢复后,重启请求。
2.2、CP【牺牲可用性】:保证数据一致性。
解决思路:只有等网络恢复正常后,才能成功下单。
2.3、CA【牺牲分区容错】:不要P分区,即不允许出现网络故障,这不可能实现。
三、常见微服务注册中心CAP原理
3.1、zookeeper
采用CP原理,即保证数据一致性,牺牲可用性。zk集群在选举出leader节点期间,Client客户端无法注册,即zookeeper服务不可用,牺牲了系统可用性。
CP有个致命缺点:大型分布式系统中,网络非常复杂,leader节点出现故障频率特别高i,很容易引起雪崩。故而很多大型分布式系统都不会选择zookeeper作为注册中心。
3.2、Eureka
采用AP原理,保证系统可用性,牺牲一致性。
Eureka数据同步原理:
第一步,Client1 客户端注册到 eureka Server1 服务中;
第二步,eureka Server1 直接告诉 Client1 注册成功。
第三步,eureka Server1 把 Client1 的注册信息同步给 Server2,为了保证服务的可用性,eureka Server 之间是异步同步的。
参考文章:https://cloud.tencent.com/developer/article/1589357