ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

分布式经典理论

2021-05-09 13:04:57  阅读:165  来源: 互联网

标签:CAP 理论 经典 state BASE 分布式系统 一致性 分区 分布式


 

CAP

  2000年Eric Brewer在ACM研讨会上提出的猜想:一致性(Consistency)、可用性(Availability)、分区容错(Partition-tolerance),三者无法在分布式系统中被同时满足,并且最多只能满足其中两个。 2003年MIT的Lynch证明了这三者确实是不可兼得的。 这被奉为分布式领域的重要理论。

  C(一致性):所有节点上的数据一直保持同步。

  A(可用性):每个请求都能收到响应,无论响应成功或失败。

  P(分区容错):系统能持续提供服务,即使内部某个节点分区有消息丢失。

  CA是分布式系统固有属性,而P是分区容错,分区是网络相关的属性,常见的几种分区如下:(1)交换机故障,导致网络被分成几个子网,形成脑裂;(2)服务器发生网络迟延或死机,导致某些服务器与集群中的其它服务器失去联系。

 

  2012年Lynch重写了之前的论文,针对业界各种质疑,刷新了CAP理论:

(1)把CAP理论局限在原子读写的场景,不支持数据库事务之类的场景;

(2)把分区容错归结为一个队网络环境的描述,而非之前的一个独立条件。这实际上更加明确了概念。

(3)引入活性Liveness和安全属性Safety,在一个更抽象的概念下研究分布式系统,并认为CAP是活性与安全属性之间权衡的一个特例。其中一致性属于活性,可用性属于安全属性。

(4)把CAP的研究推到更广阔的空间:网络存在同步、部分同步;一致性的结果也从仅存在一个到存在N个(部分一致);引入通信周期Round,并引用了其它论文,给出了为了保证N个一致性结果,至少需要通信的Round数量。

总之,Lynch论文主要几点:

(1)承认分区容错是一个既定的环境约束,而非独立的选择或者条件。

(2)缩小CAP适用范围,消除质疑场景。

 

总结一下CAP理论:首先,CAP并不是一个放之四海而皆准的原理,仅适用于原子读写的NoSQL场景,不适合数据库系统。其次,当今分布式系统早已不是十年前的简单系统,现在分布式系统还有很多特性,比如扩展性、自动化等,而不仅仅局限在CAP。

 

BASE准则:

  2008年eBay在ACM上分布了一篇BASE的文章,并给出了他们在实践中总结的基于BASE的一套新的分布式事务的解决方案,解决CAP理论不适用数据库事务的问题。

  BASE全称Basically Available, Soft-state, Eventually Consistent,即系统的主要可用、软状态、数据的最终一致性。相对于CAP,BASE大大降低了对系统的要求。

  Basically Available:例如数据库采用分区模式,100万用户分布在5个数据库实例上,如果破坏了1个,那么可用性还有80%,整个系统还是主要可用。

  Soft-state:在Client-Server模式的系统中,Server是否有状态(state),这是一个很重要的设计,也在根本上决定一个分布式系统是否具有良好的水平扩展、负载均衡、故障恢复等高级特性。然后,除了stateful和stateless,还存在另一个方式-soft state,它最早来源于计算机网络的协议设计,在分布式系统中函数是:Server承诺维持Client的state,但是仅仅维持一小段时间,过了这个时间段,Server就会将state丢弃。

  Eventually Consistent:数据最终一致性,而不是强一致性。

 

  BASE准则,主要是牺牲数据一致性来满足系统的高可用,系统中一部分数据不可用或不一致,仍需要保持系统整体的主要可用。

 

  数据库领域,BASE主要体现是对业务数据进行拆分,让不同的数据分布在不同的机器上,提升系统的可用性,主要做法:按功能划分数据库,数据库分片。由于拆分后会涉及分布式事务,所以eBay在该BASE论文中提到了如何用最终一致性的思路来实现高性能的分布式事务。

 

标签:CAP,理论,经典,state,BASE,分布式系统,一致性,分区,分布式
来源: https://www.cnblogs.com/ruanchao/p/14747469.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有