分布式理论 | 青训营笔记

63 阅读2分钟

“这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天

什么是分布式

分布式系统是计算机程序的集合,这些程序利用跨多个独立计算节点的计算资源来实现共同的目标,可以分为分布式计算,分布式存储,分布式数据库等。

优势:去中心化,低成本,弹性,资源共享,可靠性高

挑战:普通的节点故障,不可靠的网络,异构的机器与硬件环境,安全

为什么使用分布式:数据爆炸,对存储和计算有大规模运用的诉求,成本低,构建在廉价服务器之上

分布式存储:GFS Ceph HDFS Zookeeper

分布式计算:Hadoop

故障

拜占庭将军问题:两支军队派遣信使互相通信,求解在信使可能被俘虏的情况下两者达成进攻时间共识

TCP三次握手在两个方向确定包的序列号,增加了超时重试,是两将军问题的一个工程解

共识一致性

客户端A读到x=0,当客户端C在写入时,客户端A和B可能读到0或者1,但是当C写入完成后,A和B最终能读到一致的数据,我们把这个称为共时一致性

时间和事件顺序

如果a和b是相同节点上的两个事件,a在b之前发生,则定义a->b

如果事件a表示某个节点发送某条消息,b是另一个节点要接受这条消息,则定义a->b

如果a->b且b->c则a->c

当且仅当a≠>b且b≠>a时,我们称这两个事件是并发的

Lamport逻辑时钟:对于每一个节点Pi我们定义时钟Ci为一个函数,它为任意的事件a赋值编号为Ci(a)

如果a和b是相同节点Pi上的两个事件,a在b之前发生,则有Ci(a)<Ci(b)

如果事件a表示Pi节点发送某条消息,b是另一个节点Pj要接受这条消息,则有Ci(a)<Cj(b)

利用逻辑时钟,我们可以对整个系统中的事件进行全序排序