这是我参与「第五届青训营 」伴学笔记创作活动的第 8 天
分布式概述
特点:
- 去中心化:多台服务器,而不是一台服务器
- 低成本
- 弹性
- 资源共享
- 可靠性高
挑战:
- 普遍的节点故障
- 不可靠的网络
系统模型
Performance failure:短时间处理不了,还不如"挂掉" (切换别的节点处理)(可理解为时而有故障,时而没有) 拜占庭故障:大多数分布式系统不处理这个故障,因为不好处理。后续检验一下是否结果正确
拜占庭将军问题
无解的通信问题,理论上永远无法达成共识
问题:
- 为什么三次握手,不是 2 次或 4 次?
- 挥手过程中 FIN 报文丢失怎么办?
三将军问题
出现了叛徒将军 解法:增加新将军(只传递,不投票) 现有大部分分布式系统都是非拜占庭容错的,bitcoin 是拜占庭容错的
理论基础
一致性
线性一致性:强一致 最终一致性
CAP
ACID
数据库系统中事务的四特性 ACID 事务:要么全部执行,要么全不执行 与 CAP 中的一致性概念不同
数据库 ACID 的一致性,我们又称之为内部一致性,可以理解为事务开始前和结束后,数据库的完整性约束没有被破坏。比如 A 向 B 转账,不可能 A 扣了钱,B 却没收到。 分布式 CAP 的一致性,我们也称之为外部一致性,可以理解为 在分布式系统中,写操作后再读,就必须返回写入的值。比如分布式数据库 A、B、C,A 中写入数据 hello,写完马上读 B 和 C,就一定要读出 hello,读出来我们就称之为符合一致性 两者区别,内部一致性注重于事务前后数据的完整性,而外部一致性则注重于读写数据的一致性
BASE
分布式事务
共识协议
分布式实践
Raft Learner 模式进行数据修复