这是我参与「第五届青训营 」伴学笔记创作活动的第11天。
一、分布式概述
分布式系统是计算机程序的集合,这些程序利用跨多个独立计算节点的计算资源来实现共同的目标。可以分为分布式计算、分布式存储、分布式数据库等。
优势:
- 去中心化
- 低成本
- 弹性
- 资源共享
- 可靠性高
缺点:
- 普遍的节点故障
- 不可靠的网络
- 异构的机器与硬件环境
- 安全
二、系统模型
1.故障模型
- Byzantine failure:节点可以任意篡改发送给其他节点的数据
- Authentication detectable byzantine failure (ADB):Byzantine failure的特例,节点可以篡改数据,但不能伪造其他节点的数据
- Performance failure:节点未在特定时间段内收到数据,即时间太早或太晚
- Omission failure:节点收到数据的时间无限晚,即收不到数据
- Crash failure:在omission failure的基础上,增加了节点停止响应的假设,也即持续性地omission failure
- Fail-stop failure:在crash failure的基础上增加了错误检测的假设
2.拜占庭将军问题
结论是,两将军问题是被证实无解的电脑通信问题,两支军队理论上永远无法达成共识。
方案一:同时发送N个信使,任何一个达到对方军队,都算成功。 方案二:设置超时时间,发送后未在一定时间返回,则加派信使。
共识与消息传递不同:即使保证了消息传递成功,也不能保证达成共识。
3.时间和事件顺序
"happened before" 关系
三、理论基础
1.CAP理论
- C (consistence)一致性:指数据在多个副本之间能够保持一致的特性(严格)。
- A (availability)可用性:指系统提供的服务必须一直处于可用状态,每次请求都能获得非错的响应——但是不保证获取的数据为最新数据。
- P (network partitioning)分区容错性:分布式系统在遇到任何网络分区故障的时候,仍然能够对外满足一致性和可用性的服务,除非整个网络环境都发生了故障。
CAP理论往往用于数据库领域,同样适用于分布式存储。
- CA:放弃分区容错性,加强一致性和可用性,传统单机数据库的选择
- AP:放弃一致性,追求分区容错性和可用性,例如注重用户体验的系统
- CP:放弃可用性,追求一致性和分区容错性,例如与钱财安全相关的系统