这是我参与「第五届青训营 」伴学笔记创作活动的第 6 天
前言
今天主要学习了微服务理论
分布式的特点
优势:
- 去中心化
- 低成本
- 弹性
- 资源共享
- 可靠性高 挑战
- 普遍的节点故障
- 不可靠网络
- 异构机器与硬件环境
- 安全
故障模型
| 故障划分 | 解释 |
|---|---|
| Byzantine failure | 节点可以任意篡改发送给其他节点的数据 |
| Authentication detectable byzantine failure (ADB) | Byzantine failure的特例;节点可以篡改数据,但不能伪造其他节点的数据 |
| Response failure | ADB的特例,节点可以返回错误数据,但只能返回受限的错误数据 |
| Performance failure | 又名timing failure, 节点未在特定时间段内收到数据,即时间太早或太晚 |
| Omission failure | Performance failure的特例;节点收到数据的时间无限晚,即收不到数据 |
| Crash failure | Omission failure的特例;在omission failure的基础上,增加了节点停止响应的假设,也即持续性地omission failure |
| Fail-stop failure | Crash failure的特例;在Crash failure的基础上增加了错误可检测的假设 |
CAP理论
RAFT协议
raft是工程上使用较为广泛的强一致性、去中心化、高可用的分布式协议。在这里强调了是在工程上,因为在学术理论界,最耀眼的还是大名鼎鼎的Paxos。但Paxos是:少数真正理解的人觉得简单,尚未理解的人觉得很难,大多数人都是一知半解。本人也花了很多时间、看了很多材料也没有真正理解。直到看到raft的论文,两位研究者也提到,他们也花了很长的时间来理解Paxos,他们也觉得很难理解,于是研究出了raft算法。
raft是一个共识算法(consensus algorithm),所谓共识,就是多个节点对某个事情达成一致的看法,即使是在部分节点故障、网络延时、网络分割的情况下。这些年最为火热的加密货币(比特币、区块链)就需要共识算法,而在分布式系统中,共识算法更多用于提高系统的容错性,比如分布式存储中的复制集(replication),在带着问题学习分布式系统之中心化复制集一文中介绍了中心化复制集的相关知识。raft协议就是一种leader-based的共识算法,与之相应的是leaderless的共识算法。
Paxos协议
Paxos协议其实说的就是Paxos算法, Paxos算法是基于消息传递且具有高度容错特性的一致性算法,是目前公认的解决分布式一致性问题最有效的算法之一。
课后个人总结
协议内容较难理解消化