这是我参与「第五届青训营 」伴学笔记创作活动的第7天
本次课程主要分为六个方面:
- 概述
- 系统模型
- 理论基础
- 分布式事务
- 共识协议
- 分布式实践
分布式系统
分布式系统是一个硬件与软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。
CAP理论
CAP是一致性(Consistency),可用性(Avalibility),分区容错性(Partition Tolerance)的单词首字母缩写。CAP是分布式系统事物处理的重要理论。在一个分布式系统中,最多只能满足这三个特性中的两个,而不能全部满足三个。
(1)一致性是指在分布式系统中,服务端系统在数据更新后如何同步到整个分布式系统,以保证数据最终一致性。
(2)可用性是指服务一直可用且能够正常响应(不保证返回的是最新写入的数据)
(3)分区容错性是指分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务。
拜占庭将军问题
简单解析
先看在没有叛徒情况下,假如一个将军A提一个进攻提议(如:明日下午1点进攻,你愿意加入吗?)由通信兵通信分别告诉其他的将军,如果幸运中的幸运,他收到了其他6位将军以上的同意,发起进攻。如果不幸,其他的将军也在此时发出不同的进攻提议(如:明日下午2点、3点进攻,你愿意加入吗?),由于时间上的差异,不同的将军收到(并认可)的进攻提议可能是不一样的,这是可能出现A提议有3个支持者,B提议有4个支持者,C提议有2个支持者等等。
再加一点复杂性,在有叛徒情况下,一个叛徒会向不同的将军发出不同的进攻提议(通知A明日下午1点进攻, 通知B明日下午2点进攻等等),一个叛徒也会可能同意多个进攻提议(即同意下午1点进攻又同意下午2点进攻)。
初步探索
假设攻下一个城堡需要多次的进攻,每次进攻的提议必须基于之前最多次数的胜利进攻下提出的(只有这样敌方已有损失最大,我方进攻胜利的可能性就更大),这样约定之后,将军A在收到进攻提议时,就会检查一下这个提议是不是基于最多的胜利提出的,如果不是(基于最多的胜利)将军A就不会同意这样的提议,如果是的,将军A就会把这次提议记下来。
课程总结
本节课主要针对分布式理论进行了初步的讲解,其中拜占庭将军的问题解读十分有趣,并且这节课看到了一个经典的八股文:关于TCP为什么采用三次握手的问题,让我感受到八股文并不是一定要死记硬背,理解后也感觉收获很多,希望可以继续深入学习。