社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
作者简介:ASCE1885,《Android 高级进阶》 和 《Android 高级进阶(源码剖析篇)》作者
本文由于潜在的商业目的,未经授权不开放全文转载许可,谢谢!
近年来,CAP 定理已经成为分布式系统设计的基本准则之一,CAP 定理表明,任何分布式计算机系统只能同时满足一致性(Consistency),可用性(Availability)和分区容错性(Partition Tolerance)三者中的任意两个。
那么这三者的具体含义是什么呢?
由于任何分布式系统任何时候只能同时满足 CAP 定理中的两个属性,因此,我们可以根据这一点将分布式系统分为三类:
在真实的分布式系统网络环境中,网络分区是不可避免的,因此,通常需要保证即使在发生网络分区的情况下,系统作为整体仍然能够正常运行并提供服务,也就是满足分区容错性。因此,留给大多数分布式系统的选择也就只剩下到底是保证系统一致性还是可用性了。
在进行系统设计时,我们要根据具体的业务场景需求来进行选择。例如你设计的是一个类似微博这样的系统,那么肯定要保证系统的高可用,而用户发表一条微博后,其他用户要过一小段时间才能查看到,这并不会产生多大的影响,此时可用性相对一致性而言就重要的多了。
那么常见的中间件存储系统都是什么类型的呢?如下图所示:
最后要强调一点,CAP 定理关注的是对数据的读写操作,而不是分布式系统的所有功能,它要求分布式系统节点间是互相连接且有数据共享的,例如 Memcache 的集群中节点相互间没有连接和数据共享,因此不是 CAP 定理讨论的对象,同理 ZooKeeper 的选举机制也不是 CAP 探讨的对象。
参考资料:
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!