ACID
事务的四个特征:Atomic原子性,Consistency一致性,Isolation隔离性,Durability持久性
CAP
在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼。
BASE
BASE是Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性)三个短语的简写,BASE是对CAP中一致性和可用性权衡的结果,其来源于对大规模互联网系统分布式实践的结论,是基于CAP定理逐步演化而来的,其核心思想是即使无法做到强一致性(Strong consistency),但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性(Eventual consistency)。
2PC
两阶段提交
阶段一:提交事务请求(投票阶段)(会阻塞)
阶段二:执行事务提交(执行阶段)
3PC
解决2PC的阻塞,但还是可能造成数据不一致
阶段一:CanCommit
阶段二:PreCommit(将2pc的阶段一分成两部,减少了阻塞)
阶段三:doCommit(由于有阶段一和二,这儿超时会提交,会造成数据不一致)
paxos
Paxos的目的是让整个集群的对某个值的变更达成一致。
- phase 1
- a) proposer向网络内超过半数的acceptor发送prepare消息
- b) acceptor正常情况下回复promise消息
- phase 2
- a) 在有足够多acceptor回复promise消息时,proposer发送accept消息
- b) 正常情况下acceptor回复accepted消息
raft
Raft 是一种为了管理复制日志的一致性算法。它提供了和 Paxos 算法相同的功能和性能,但是它的算法结构和 Paxos 不同,使得 Raft 算法更加容易理解并且更容易构建实际的系统。
Raft 将一致性问题分解成了三个相对独立的子问题:
- 领导选举:一个新的领导人需要被选举出来,当先存的领导人宕机的时候
- 日志复制:领导人必须从客户端接收日志然后复制到集群中的其他节点,并且强制要求其他节点的日志保持和自己相同。
- 安全性:在 Raft 中安全性的关键是状态机安全:如果有任何的服务器节点已经应用了一个确定的日志条目到它的状态机中,那么其他服务器节点不能在同一个日志索引位置应用一个不同的指令。
系统可用性指标
系统可用性% | 宕机时间/年 | 宕机时间/月 | 宕机时间/周 | 宕机时间/天 |
---|---|---|---|---|
90% (1个9) | 36.5 天 | 72 小时 | 16.8 小时 | 2.4 小时 |
99% (2个9) | 3.65 天 | 7.20 小时 | 1.68 小时 | 14.4 分 |
99.9% (3个9) | 8.76 小时 | 43.8 分 | 10.1 分钟 | 1.44 分 |
99.99% (4个9) | 52.56 分 | 4.38 分 | 1.01 分钟 | 8.66 秒 |
99.999% (5个9) | 5.26 分 | 25.9 秒 | 6.05 秒 | 0.87 秒 |