分布式理论(一)| 青训营笔记

93 阅读2分钟

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

分布式:利用多个独立节点计算资源,分为分布式计算、分布式存储、分布式数据库
缓存系统,中间件

挑战:

  1. 普遍节点故障
  2. 不可靠网络
  3. 易构的机器与硬件环境
  4. 安全

分布式系统

image.png

故障

根据处理难度划分(越上越难处理),计算机执行具体确定的指令,对于不确定性强的事件,软件很难处理
ADB(拜占庭问题的特例):只会改本节点的数据,原因:本地内存,硬盘错乱
微服务performance failure:解决方法最好是服务降级或者切换,因为不确定恢复时间

从上到下:正确性 -> 时间 -> 状态 -> 原因
fail-stop:知道状态和原因,错误码明确
crash:只知道状态,不知道原因,进程退出就是crash
omission,performance:未觉的状态,omission长时间未觉,可确定是故障;performance是故障和非故障的叠加
拜占庭:正确性故障

image.png

拜占庭问题

计算机网络中:这个问题的本质是, 信道不可靠, 但是通信双发需要就某个问题达成一致,而要解决这个问题, 无论你在消息中包含什么信息, 三次通信是理论上的最小值

0次: 显然不行
1次: A->B, A不知道B是否同意
2次: A->B, B->A. B不知道A是否收到自己的消息, 因为信道不完全可靠
[这儿A已经可以确信信道是可靠的了,只是B不能确信而已,这儿你要是把信道当成TCP链接本身,也就是全双工,自然如此,但是像我这样把链路分成两个方向上的 信道的人来说,却不是如此。并且TCP确实可以建立半链接]
3次: A->B, B->A, A->B. 两边都收到了对方的ACK, 意味着各自都了解了对方的意图, 从而可以对是否开始通信这个最简单的问题达成一致
三次握手的原理是确保:"两边都同意开始传出数据"

image.png

现实分布式系统都未考虑数据是否被篡改 image.png