历史演变
计算机发展初期,大型主机凭借其超强的计算能力、IO处理能力和稳定性、安全性方面的优秀表现,使得以大型主机为中心的集中式系统架构快速发展起来。
集中式系统: 每个终端或客户端机器仅负责数据的输入与输出,其余数据的控制和存储都交由主机完成
。
面临问题
- 对主机性能要求高,代价昂贵
- 无容灾能力
- 扩展性差
- 单点问题
随之信息大爆炸的时代来临,集中式系统弊端越来越来明显。为解决上述问题,越来越多的公司改用小型机和普通PC服务器来搭建分布式的计算机系统。
分布式系统:一个硬件或软件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调系统
。
面临问题
- 节点通信异常
- 网络分区
- 节点故障
事务(ACID理论)
分布式系统虽然解决了集中式系统的弊端,但是本身也面临新的问题。其中主要的就是分布式事务问题。首先让我们了解下,什么叫事务。
事务:一系列数据操作组成的程序执行逻辑单元
。
特性
- 原子性(Atomicity)
- 全部成功执行
- 全部不执行
- 一致性(Consistency)
- 保证数据库必须从一种状态转变到另一种状态
- 隔离性(Isolation)
- 各事务执行相互不影响
- 持久性(Durability)
- 数据的状态会被永久记录
CAP理论
在集中式系统中,单台主机的事务可以通过上述ACID
模型实现。但是面对分布式系统的事务又该满足何种模型呢?
2000年7月,加州伯克利分校教授Eric Brewer
首次提出了CAP猜想
,两年后被证明可行性。自此,这一理论为分布式计算发展打下牢固基石。
CAP理论:一个分布式系统不可能同时满足一致性
(C:Consistency)、可用性
(A:Availability)及分区容错性
(P:Partition tolerance)这三个基本需求,最多只能同时满足其中的两项。
特性说明
- 一致性:数据在多个副本之间能否保持一致的特性
- 可用性:系统提供的服务是否可用
- 分区容错性:在遇到任何网络分区故障时,系统仍能对外提供满足一致性和可用性的服务
正所谓鱼和熊掌不可兼得,那我们在这三个条件下该如何取舍呢?
CAP抉择 | 影响 |
---|---|
强AC 弱P | 为避免分区容错性问题,可以将所有与事务相关的数据都放在同一分布式节点上。 但是这样虽然避免了分区容错问题,同时也意味着 放弃了系统拓展性 ,回到了集中式系统的问题。 |
强AP 弱C | 这里的弱一致性也就说允许系统在一段时间内可以出现各节点数据不一致情况。 也叫做 时间窗口期 。但保证系统的最终一致性。 |
强CP 弱A | 弱A就说在发生网络分区或其他故障时,系统会暂时出现不可用的状态 。 |
一般根据业务的特性会选择AP
或CP
。因为放弃分区容错,那分布式的其他两项也没有任何意义。分区容错是基石。
AP常见场景
- 春节抢红包
- 支付宝普通转账
- ZK集群
- ...
CP常见场景
- 银行转账
- ...
BASE理论
如果说CAP理论
是分布式指导思想,那BASE理论
就是分布式的最佳实践。
BASE理论:系统即使无法做到强一致性,也可以根据系统自身业务特点来达到系统的最终一致性。
说明
- 基本可用(BA:Basically Available)
- 响应时间上的损失
- 功能上的损失
- 软状态 (S:Soft state)
- 允许存在时间窗口
- 最终一致性(E:Eventually Consistent)
- 因果一致性
- 读己之所写
- 会话一致性
- 单调读一致性
- 单调写一致性
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名,转载请标明出处
最后编辑时间为:
2019-09-23