分布式理论|青训营笔记

80 阅读2分钟

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

主要内容:分布式概述、系统模型、理论基础、分布式事务、公式协议、分布式实践。

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

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

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

拜占庭将军问题:两支军队的将军只能派信使穿越敌方领土互相通信,以此约定进攻时间。该问题希望求解如何在两名将军派出的任何信使都可能被服务的情况下,就进攻时间达成共识,两将军问题被证实无解的电脑通信问题,两支军队理论上永远无法达成共识。可以思考TCP三次握手协议,是否解决了该问题。

共识和一致性:多个节点间势必需要进行协商,以寻求一致,这样增加了延迟,系统可用性便会受损。

分布式实践:MapReduce

mapper:将输入分解成多个job来并行处理,彼此间几乎没有依赖关系

shuffler:将maper结果打乱,防止数据倾斜

分布式KV:将海量结构化数据根据key分成不同的region,将每个region构建一个单机kv数据库,region之间形成raftgroups,做到强一致。 容错:当node故障时,通过raft learner模式进行数据修复。弹性,当出现局部key热点或数据膨胀时,region可以进行split操作,分成两个子region,反之收缩时进行merge操作。

Mvcc是一种并发控制的方法,维持一个数据的多个版本使读写操作没有冲突。所以既不会造成阻塞写,也不会阻塞读。MVCC为每个修改该保存一个版本,和事务的时间戳相关联。可以提高并发性能,解决脏读问题。