这是我参与「第五届青训营 」伴学笔记创作活动的第 2 天
1. 什么是分布式
-
分布式系统是计算机程序的集合,这些程序利用跨多个独立计算节点的计算资源来实现共同目标
-
分为分布式计算、分布式存储、分布式数据库
-
优势和挑战
2. Why-How-What
- 为什么使用分布式:数据爆炸,对存储和运算大规模运用的需求;成本低,构建在廉价服务器上
- 怎样使用分布式:分布式框架;成熟的分布式系统
- 分布式关注的重点是什么:规模、负载、一致性要求、稳定性要求
- 怎样学习分布式:掌握分布式理论,了解一致性协议
3. 常见的分布式系统
4. 常见的故障类型
- 正确性故障(大多数分布式系统不解决此类故障,加密和冗余信息设计可以缓解正确性故障):Byzantine-failure,ADB
- 时间故障(未决的状态):Omissions-failure Performance-failure
- 状态故障:Fail-stop Crash
- 原因可知/不可知故障:Fail-stop
| 故障 | 描述 | 可能类型 |
|---|---|---|
| 磁盘 | 磁头不寻道、盘片不转、磁介质损伤 | Fail-stop |
| 磁盘坏道 | 磁头划伤引起的;宇宙射线引起位反转 | Fail-stop,ADB |
| 主板、板卡故障 | Crash | |
| 网络故障 | 网卡位反转、大量丢包;电源故障、背板故障 | Byzantine,Omission |
| 网络分区 | 网络引起节点划分为不同子集,子集中相通,子集间不通 | Performance |
| 内存故障 | 内存出错,数据被篡改 | ADB |
| 线缆故障 | 服务器光模块频繁up和down | Performance,Omission |
| 内核崩溃 | Crash | |
| CPU故障 | Omission,Crash | |
| 电源故障 | Omission | |
| 软件故障 | 进程Crash、内存踩坏、状态不一致、配置错误、软件bug | Byzantine |
5. 拜占庭将军问题
拜占庭将军问题是一个协议问题,拜占庭帝国军队的将军们必须全体一致的决定是否攻击某一支敌军。 问题是这些将军在地理上是分隔开来的,并且将军中存在叛徒。 叛徒可以任意行动以达到以下目标:
- 欺骗某些将军采取进攻行动;
- 促成一个不是所有将军都同意的决定,如当将军们不希望进攻时促成进攻行动;
- 或者迷惑某些将军,使他们无法做出决定。
如果叛徒达到了这些目的之一,则任何攻击行动的结果都是注定要失败的,只有完全达成一致的努力才能获得胜利。 拜占庭假设是对现实世界的模型化,由于硬件错误、网络拥塞或断开以及遭到恶意攻击,计算机和网络可能出现不可预料的行为。