这是我参与「第五届青训营 」伴学笔记创作活动的第 11 天
主题:现代架构基石
1.分布式概述
分布式系统是计算机程序的集合,这些程序利用跨多个独立计算节点的计算资源来实现共同的目标。可以分为分布式计算、分布式存储、分布式数据库等。
优势:
1.去中心化
2.低成本
3.弹性
4.资源共享
5.可靠性高
挑战:
1.普遍的节点故障
2.不可靠的网络
3.异构的机器与硬件环境
4.安全
分布式存储:
1.Google File System (GFS) :google分布式文件系统
2.Ceph: 统一的分布式存储系统
3.Hadoop HDFS: 基于GFS架构的开源分布式文件系统
4.Zookeeper: 高可用的分布式数据管理与系统协调框架
分布式数据库:
1.Google Spanner: google可扩展的、全球分布式的数据库
2.TiDB: 开源分布式关系型数据库
3.HBase: 开源Nosql数据库
4.MongoDB: 文档数据库
分布式计算:
1.Hadoop: 基于MapReduce分布式计算框架
2.Spark: 在Hadoop基础之上,使用内存来存储数据
3.YARN: 分布式资源调度
2.系统模型
故障模型
Byzantine failure: 节点可以任意篡改发送给其他节点的数据
Authentication detectable byzantine failure(ADB): Byzantine failure的特例;节点可以篡改数据但不能伪造其他节点的数据
Performance failure: 节点未在特定时间段内收到数据,即时间太早或太晚
Omission failure: 节点收到数据的时间无限晚,即收不到数据
Crash failure: 在omission failure的基础上,增加了节点停止响应的假设,也即持续性地omission failure
Fail-stop failure: 在Crash failure的基础上增加了错误可检测的假设
拜占庭将军问题
引入: 两将军问题 (Two Generals' Problem) : 两支军队的将军只能派信使穿越敌方领土互相通信,以此约定进攻时间。该问题希望求解如何在两名将军派出的任何信使都可能被俘虏的情况下,就进攻时间达成共识。
结论是,两将军问题是被证实无解的电脑通信问题,两支军队理论上永远无法达成共识。
方案一: 同时发送N个信使,任何一个达到对方军队,都算成功。
方案二: 设置超时时间,发送后未在一定时间返回,则加派信使。
共识与消息传递的不同: 即使保证了消息传递成功,也不能保证达成共识TCP 三次握手是在两个方向确认包的序列号,增加了超时重试,是两将军问题的一个工程解。
思考:
1.为何三次握手?而不是两次和四次?
2.挥手过程中,如果FIN 报文丢失,发生什么?