分布式系统的CAP理论和BASE理论 た 入场券 2022-05-24 10:49 204阅读 0赞 现在分布式系统的应用越来越广, 这是一个很容易理解的趋势, 因为毕竟单机的性能是有限的, 在量级还不大的时候, 我们能够通过升级机器的性能来支撑服务。但是当量级到达一定的瓶颈, 单机的性能总会有撑不住的时候, 这个时候就需要使用分布式系统了。 但是当引入分布式系统之后, 就必然面临一个问题, 分布式必然是一个集群,集群中的节点就需要交互, 但是网络是一个不稳定的因素, 这个时候就需要在一致性和可用性上做一个权衡。 CAP理论 CAP是Consistency、Availablity和Partition-tolerance的缩写。分别是指: 1.一致性(Consistency):每次读操作都能保证返回的是最新数据; 2.可用性(Availablity):任何一个没有发生故障的节点,会在合理的时间内返回一个正常的结果; 3.分区容忍性(Partition-torlerance):当节点间出现网络分区,照样可以提供服务。 CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个。 首先,单机肯定不存在分区的问题, 所以肯定只能保证CA。不过既然是讨论分布式系统, 这个情况肯定不在我们考虑范围内。 对于分布是系统,P肯定是占的, 那么到底是AP呢还是CP呢。 当出现节点间网络中断的情况, 如果选择一致性CP,意味着在网络恢复 数据在节点间同步完之前是不可用的。 如果选择可用性AP,意味着我们放弃了各个节点直接的同步 在实际操作的时候,一般的服务都要保证服务的可用性,所以一般会选择AP,然后在网络恢复后得到最终一致性 根据 CAP 原理将 NoSQL 数据库分成了满足 CA 原则、满足 CP 原则和满足 AP 原则三 大类: * CA - 单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。 * CP - 满足一致性,分区容忍性的系统,通常性能不是特别高。 * AP - 满足可用性,分区容忍性的系统,通常可能对一致性要求低一些。 * ![70][] * BASE理论 * BASE理论是对CAP理论的延伸,核心思想是即使无法做到强一致性(Strong Consistency,[CAP][]的一致性就是强一致性),但应用可以采用适合的方式达到最终一致性(Eventual Consitency)。 BASE是指基本可用(Basically Available)、软状态( Soft State)、最终一致性( Eventual Consistency)。 ### 基本可用(Basically Available) ### 基本可用是指分布式系统在出现故障的时候,允许损失部分可用性,即保证核心可用。 电商大促时,为了应对访问量激增,部分用户可能会被引导到降级页面,服务层也可能只提供降级服务。这就是损失部分可用性的体现。 ### 软状态( Soft State) ### 软状态是指允许系统存在中间状态,而该中间状态不会影响系统整体可用性。分布式存储中一般一份数据至少会有三个副本,允许不同节点间副本同步的延时就是软状态的体现。mysql replication的异步复制也是一种体现。 ### 最终一致性( Eventual Consistency) ### 最终一致性是指系统中的所有数据副本经过一定时间后,最终能够达到一致的状态。弱一致性和强一致性相反,最终一致性是弱一致性的一种特殊情况。 [70]: /images/20220524/b18552c7e934496492f55e85ff412cf4.png [CAP]: http://www.hollischuang.com/archives/666
还没有评论,来说两句吧...