至元数据起始
一致性,可用性,分区容错性
1.为什么学习并记录分布式设计理念一系列相关的东西
在日常工作中系统设计评审的时候,经常会有一些同事抛出一些概念,高可用性,一致性等等字眼,他们用这些最基本的概念去反驳系统最初的设计,但是很多人理解的可用性,一致性等等问题,都是自己拍脑袋想的,或者根本和最原始表达的意思就不是一个东西,在这种情况下PK,就像不再一个频段的人在交流,除了争论,没有任何实质性的进展,所以有必要熟悉其理论基础,以免贻笑大方。(其实类似的例子还有很多,国内的技术人员都喜欢把一些此词模糊化,混淆而谈。例如XX云,实际卖的就是vps 和一小部分saas,这就叫cloud computing?)
2.准备说哪些东西
分布式系统设计在评审时,争论得最多的地方,其实也就是著名的cap理论,本文也主要对CAP理论加以自己的理解和应用
CAP理论
什么是分布式系统
部分在不同的节点上,通过网络协同工作的系统叫做分布式系统
CAP分别代表什么
• Consistency
• (all nodes see the same data at the same time)
• Availability
• Reads and writes always succeed.
• Partition tolerance
• (the system continues to operate despite arbitrary message loss or failure of part of the system)
一致性: 更新操作成功并返回客户端完成后,分布式的所有节点在同一时间的数据完全一致
可用性: 读和写操作都能成功
分区容错性:再出现网络故障导致分布式节点间不能通信时,系统能否继续服务
CAP的是什么关系
It states, that though its desirable to have Consistency, High-Availability and Partition-tolerance in every system, unfortunately no system can achieve all three at the same time.
在分布式系统的设计中,没有一种设计可以同时满足一致性,可用性,分区容错性 3个特性
注意:不要将弱一致性,最终一致性放到CAP理论里混为一谈(混淆概念的坑真多)
弱一致性,最终一致性 你可以认为和CAP的C一点关系也没有,因为CAP的C是更新操作完成后,任何节点看到的数据完全一致, 弱一致性。最终一致性本身和CAP的C一致性是违背的,所以你可以看到那些谎称自己系统同时具备CAP 3个特性是多么的可笑,可能国内更多的场景是:一个开放人员一旦走上讲台演讲,就立马转变为了营销人员,连最基本的理念也不要了。
这里有一篇标题很大的文章 cap-twelve-years-later-how-the-rules-have-changed ,实际上本文的changed更多的是在思考方式上,而本身CAP理论是没有changed的
为什么会是这样
我们来看一个简单的问题, 一个DB服务 搭建在两个机房(北京,广州),两个DB实例同时提供写入和读取
1. 假设DB的更新操作是同时写北京和广州的DB都成功才返回成功
在没有出现网络故障的时候,满足CA原则,C 即我的任何一个写入,更新操作成功并返回客户端完成后,分布式的所有节点在同一时间的数据完全一致, A 即我的读写操作都能够成功,但是当出现网络故障时,我不能同时保证CA,即P条件无法满足
2. 假设DB的更新操作是只写本地机房成功就返回,通过binlog/oplog回放方式同步至侧边机房
这种操作保证了在出现网络故障时,双边机房都是可以提供服务的,且读写操作都能成功,意味着他满足了AP ,但是它不满足C,因为更新操作返回成功后,双边机房的DB看到的数据会存在短暂不一致,且在网络故障时,不一致的时间差会很大(仅能保证最终一致性)
3. 假设DB的更新操作是同时写北京和广州的DB都成功才返回成功且网络故障时提供降级服务
降级服务,如停止写入,只提供读取功能,这样能保证数据是一致的,且网络故障时能提供服务,满足CP原则,但是他无法满足可用性原则
选择权衡
通过上面的例子,我们得知,我们永远无法同时得到CAP这3个特性,那么我们怎么来权衡选择呢?
选择的关键点取决于业务场景
对于大多数互联网应用来说(如网易门户),因为机器数量庞大,部署节点分散,网络故障是常态,可用性是必须需要保证的,所以只有设置一致性来保证服务的AP,通常常见的高可用服务吹嘘5个9 6个9服务SLA稳定性就本都是放弃C选择AP
对于需要确保强一致性的场景,如银行,通常会权衡CA和CP模型,CA模型网络故障时完全不可用,CP模型具备部分可用性,实际的选择需要通过业务场景来权衡(并不是所有情况CP都好于CA,只能查看信息不能更新信息有时候从产品层面还不如直接拒绝服务)
延伸
BASE(Basically Available, Soft State, Eventual Consistency 基本可用、软状态、最终一致性) 对CAP AP理论的延伸, Redis等众多系统构建与这个理论之上
ACID 传统数据库常用的设计理念, ACID和BASE代表了两种截然相反的设计哲学,分处一致性-可用性分布图谱的两极。
扩展阅读
Daniel Abadi认为 CAP 应该叫 PACELC http://dbmsmusings.blogspot.jp/2010/04/problems-with-cap-and-yahoos-little.html
Brewer's CAP Theorem http://www.julianbrowne.com/article/viewer/brewers-cap-theorem
Foundationdb 的CAP权衡选择 https://foundationdb.com/white-papers/the-cap-theorem
<!-- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"> <rdf:Description rdf:about="http://10.11.112.49:8090/pages/viewpage.action?pageId=3285293" dc:identifier="http://10.11.112.49:8090/pages/viewpage.action?pageId=3285293" dc:title="分布式系统设计权衡之CAP" trackback:ping="http://10.11.112.49:8090/rpc/trackback/3285293"/> </rdf:RDF> -->
相关推荐
本书为分布式系统的CAP理论。无论你是一个架构师,还是一个普通开发,在设计或开发分布式系统的时候,不不可避免的要在CAP中 做权衡。需要根据⾃自⼰己的系统的实际情况,选择最适合自己的方案。
VeSpace Server SAN 专门为云计算生态而设计,在产品易用性、运营成本,数据安全和软 件复杂度上进行了深入的思考与权衡,融合了分布式数据、分布式缓存、容量负载均衡、及 多重数据保护等诸多存储技术,能够满足...
论文研究-并行设计中系统级指标权衡分析的方法研究.pdf, 提供了在并行工程环境下应用模糊集合理论进行多个系统级设计指标权衡分析的方法描述 ,为设计初期方案权衡提供了...
非科班出身程序员刷题CMPS290S-Winter16: ...这些结果告诉我们在分布式系统中我们无法实现什么,或者更具建设性地告诉我们,在设计或使用大型系统时,我们必须权衡哪些特性以换取所需的特性。 但是我们能实现什么?
很好的解决下行分布式天线系统中进行能量效率和频谱效率的权衡问题的代码
这篇文章的意图不是要给出一个关于高速ADC前端设计的“公式”,而是要说明,利用变压器或放大器优化设计时有许多因素需要权衡。转换器及其拓扑结构有许多类型,本文针对的是采样速率为10MSPS或更高的缓冲型和无缓冲...
这篇文章主要侧重于Web系统,并且也适用于其他分布式系统。构建并运营一个可伸缩的Web站点或应用程序到底是指什么?在最初,仅是通过互联网连接用户和访问远程资源。和大多数事情一样,当构建一个Web服务时,需要...
在本文中,我们讨论了分布式机器学习 (ML) 系统中准确性和效率之间的权衡,并分析了由此产生的政策考虑。 这种权衡实际上在包括法律和医学在内的多个学科中非常普遍,并且它适用于计算机科学中的各种子领域。 准确性...
针对产品设计方案费效权衡中由于未考虑生产过程中不确定性因素影响而导致的权衡结果易产生偏差的问题,提出将不确定优化理论引入产品设计方案费效权衡模型中。在对关键设计参数敏感性分析的基础上,将敏感性变量以及...
生态系统服务评估与权衡InVEST模型3.2.0版本。。。。。。。。。。。。
分布式系统的典型应用 分布式事务、分布式锁 常用的分布式事务解决方案介绍有多少种? 一、一致性理论 二、一致性模型 三、分布式事务解决方案 四、选择建议 分布式锁的几种实现方式 1. 使用Redis实现分布式锁 * ...
分布式账本技术 (DLT),包括区块链,可以在去中心化系统中安全处理不可信方之间的交易。 但是,DLT 可用于表现出不同特征的不同设计。 此外,DLT 特征具有互补和相互冲突的相互依赖关系。 因此,永远不会有适用于...
异构集群分布式存储系统的存储和修复带宽权衡
论文研究-柔性对分布式制造系统绩效的影响.pdf, ... 仿真实验发现: 在分布式制造系统中, 柔性虽然能给工厂带来期望收益的增加, 但同时也增加了工厂之间为获得转包订单的竞争强度, 工厂应权衡这两方面来进行柔性决策.
下行分布式天线系统的能效和频谱效率的权衡
dobbo分布式开发,权衡治理,负载均衡,提供高性能和透明化rpc远程服务调用方案,以及soa服务治理方案,里面有dobbowar包,自己maven打包可以用,还有一个zookeeper客服端,那里面有详情介绍,特别适合入门
本书没有局限于对LTE规范的简单翻译,而是基于作者的参会经历,对LTE研究和标准化过程中关键技术的取舍和设计方案的甄选过程进行了分析,诠释了LTE系统设计的思想,体现了标准化的整体设计、全面权衡的特点,因此...