分布式理论 - 现代架构基石
1. 概述
1.1 什么是分布式?
分布式系统是计算机程序的集合,这些程序利用跨多个独立计算机节点的计算资源来实现共同的目标,可以分为分布式计算、分布式存储、分布式数据库等。
- 分布式系统定义:跨多个节点的计算机程序的集合
- 使用分布式系统的五大优势:去中心化、低成本、弹性、资源共享、可靠性高
- 分布式系统的挑战:故障、网络、环境、安全
1.2 常见的分布式系统
-
分布式存储:GFS、Ceph、HDFS、Zookeeper
-
分布式数据库:Spanner、TiDB、HBase、MangoDB
-
分布式计算:Hadoop、YARN、Spark
1.3 故障模型
- Byzantine failure:节点可以任意篡改发送给其他节点的数据,是最难处理的故障
- Authentication detectable byzantine failure (ADB):节点可以篡改数据,但不能伪造其他节点的数据
- Performance failure:节点未在特定时间段内收到数据,即时间太早或太晚**(短时间恢复不了,赶紧做一下降级或者切换)**
- Omission failure:节点收到数据的时间无限晚,即收不到数据
- Crash failure:节点停止响应,持续性的故障
- Fail-stop failure:错误可检测,是最容易处理的故障
1.4 拜占庭将军问题
引入:
两将军问题(Two Generals’Problem):两支军队的将军只能派信使穿越敌方领土互相通信,以此约定进攻时间。该问题希望求解如何在两名将军派出的任何信使都可能被俘虏的情况下,就进攻时间达成共识。
方案一: 同时发送N个信使,任何一个达到对方军队,都算成功。
方案二: 设置超时时间,发送后未在一定时间返回,则加派信使。
结论:两将军问题是被证实无解的电脑通信问题,两支军队理论上永远无法达成共识。
共识与消息传递的不同:即使保证了消息传递成功,也不能保证达成共识。
三将军问题:
-
如果不存在叛徒,三将军一定可以达成共识。
-
两个“忠将”A“和”B“,一个“叛徒”C”,互相传递消息,消息可能丢失,也可能被篡改,当有一个将军是“叛徒”