请先参考如上两个链接。
以下纯属个人拙见,相关错误理解还请留言帮忙纠正,一起进步,谢谢。
概念:
一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项。
Consistency:即在分布式环境中,即使部署了n多的节点机器,对客户端的访问来说,任何一台机器的响应应该都是一致的。
Avaliability: 个人理解是某单台机器服务一直可用,并且是正常的响应时间,例如单台机器中,客户端的请求响应时间为20ms,如果是分布式部署,那么任意访问的这台机器的响应时间也要保证。
Partition Tolerance:需要在一个分区的概念上去理解。
AP:在机器节点较多,但是还要保证可用性(用户的请求和相应在正常时间内返回)的情况下,一致性不能保证,因为数据在进行一致性同步时必然会造成不必要的阻塞。
AC:基于上面的理解,如果要同时保证一致性和可用性,那机器节点的数量不能太多,如果由于网络抖动造成分区情况,分区容错性则不能保证。
CP:机器节点较多,但还要保证一致性,如果用户请求落到某一台正在进行大量数据同步操作的机器上,则可用性不可保证,可能会出现等待超时的情况。