分布式理论 - 现代架构基石 | 青训营笔记

74 阅读2分钟

这是我参与「第五届青训营」笔记创作活动的第8天。 老师首先介绍了什么是分布式,分布式系统就是计算机程序的集合,这些程序利用跨多个独立计算的计算资源来实现共同目标。可以分为分布式计算、存储和数据库等。分布式系统有很多优势但同时也面临很多挑战。然后介绍了一些故障模型,包括Byzantine failure、ADB、Performance failure、Omission failure、Crash failure和Fail-stop failure,然后大致介绍一些开发过程中可能遇到的故障属于哪种模型。之后介绍了拜占庭将军问题,首先是两将军问题,这个问题理论上是无解的,而两将军问题的一个工程解是TCP三次握手。然后介绍了三将军问题以及解决办法--加一个将军,并且给出结论,当有3n+1个将军,其中有n个叛徒时,增加n轮协商即可最后达成一致。然后介绍了共识和一致性,包括最终一致性和线性一致性,然后介绍了时间和事件顺序以及Lamport逻辑时钟。然后介绍了一些理论,首先是CAP理论,常常应用在数据库领域,也可适用于分布式存储方向,CAP在实际工程中无法全部实现,所以就衍生了CA、CP、AP,并且通过例子讲解了选择不同的情况下可能发生的结果。然后介绍了数据库事物的四个特性ACID,即原子性、一致性、隔离性和持久性。然后是BASE理论,BASE理论是对CAP中一致性和可用性权衡的结果。然后是分布式事物,涉及到了二阶段提交,这是为了使分布式系统下的各个节点在进行事物提交时保持一致性的算法。然后是二阶段提交改进后的三阶段提交。然后是MVCC,这是一种并发控制的方法。然后使共识协议,首先是Quorum NWR模型,然后是RAFT协议,RAFT使用了Quorum机制,这是一种分布式一致性算法,然后是Paxos协议。最后是分布式实践,介绍了MapReduce和分布式KV。今天的课程基本都是概念,理解起来比较容易,其中拜占庭将军问题和共识协议这两点我在课中不是很明白,课后搜集资料看了回放基本都理解了。