这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天
分布式理论
概述
什么是分布式
分布式系统是计算机程序的集合,这些程序利用跨多个独立计算节点的计算资源来实现共同的目标。可以分为分布式计算、分布式存储、分布式数据库等。
Why-How-What
Why:
- 数据爆炸,对存储和计算有大规模运用的述求
- 成本低,构建在廉价服务器上 How:
- 分布式框架
- 成熟的分布式系统 What:
- 理清规模,负载,一致性要求等
- 明确稳定性要求,制定技术方案
常见的分布式系统
系统模型
故障模型
拜占庭将军问题
共识与一致性
时间与事件顺序
理论基础
CAP理论
ACID理论
BASE理论
分布式事务
两阶段提交
三阶段提交
MVCC
共识协议
Quorum NWR模型
RAFT协议
Paxos协议
-
Paxos算法与RAFT算法区别:
- Multi-Paxos 可以并发修改日志,而Raft写日志操作必须是连续的
- Multi-Paxos 可以随机选主,不必最新最全的节点当选Leader
-
优劣势
- 优势:写入并发性能高,所有节点都能写
- 劣势:没有一个节点有完整的最新的数据,恢复流程复杂,需要同步历史记录
问题
-
分布式系统有哪些优势和挑战?
-
两将军问题为什么理论上永远达不成共识?
-
为什么TCP采用三次握手?而不是两次和四次?
-
为什么在4将军问题中,增加1轮协商就可以对抗拜占庭故障?
-
什么是最终一致性?什么是线性一致性?
-
CAP理论中,请举例说明可用性和一致性的矛盾?
-
数据库里的一致性和分布式系统中的一致性有什么区别?
-
两阶段提交中,什么场景需要数据库管理员介入?
-
三阶段提交缓和两阶段提交的哪两个问题?
-
什么场景适合乐观锁?什么场景适合悲观锁?
-
在共识协议中,为什么说允许数据被覆盖会带来数据一致性问题?
-
RAFT协议中,Leader写成功日志Log20但未同步给Followers后宕机,Follower重新选举后产生一条新日志Log20,这时Leader重启,整个系统发现两种不一样的Log20的记录,请问如何区分并拒掉前面的Log20?
-
RAFT协议中,Stale读是如何产生的?该如何解决Stale读的问题?