废话几句
不容易啊,终于快结束了。
操作系统不是我的主项,但又是基础,这一轮读下来,还有些稀里糊涂的,不过已经理解了很多点了。
分布式系统简介:
分布式的课程建议 MIT 的 6.824。(我没看过,看过很多人推荐这门课程,等时间宽裕的时候再去扫一遍。)
与分布式想对应的是集中式系统。这里有两个图可以看到架构的区别。
理想中的分布式系统是这样的:
现实中的分布式系统是这样的:
分布式系统的实现需求:
协议:
多接点间的传递依靠协议。
协议主要分为两部分:1.传递内容如何构造 2.传递动作的定义,包含参数的设置
文中说可以把协议理解为状态机,我理解是不是表示通过协议的传递,让多节点的状态切换(状态同步?)
PS:很早之前做通讯的时候,会遇到各种协议。主要是:1.各个状态机的切换和维护。2.控制和数据报文的构造。
通讯协议来了。
这里有一个个人觉得比较重要的概念,应用层不应该依赖中间层的实现去做功能上的保护,如邮件重传,不应该依赖网络。
主要还是用方法 2,用端到端的检查来保证数据的正确性。
这里绿色的线是实现了环路自检,自发自收,保证数据的正确性。做通讯的时候就有很多这种环路自检的功能,保证一致性。
在中间层做验证是有开销的,当然也有一些必须在网络层需要检测的内容会在网络层做检测。
在问题较多的情况下,及早发现问题是可以降低开销的。
请求/应答模型
这里会把分布式的系统抽象成一个请求应答的模型。
请求/应答和生产者模式比较相似:
分布式系统的公共问题:
二阶段提交
https://blog.csdn.net/lengxiao1993/article/details/88290514
推荐看这个,操作系统里面写得过于抽象。。。
后面关于分布式和区块链的内容(暂时也不太想了解),这块我从来没看过,连个菜鸡都算不上。还是不写了。
关于 rpc 可以参考这篇:
https://blog.csdn.net/u014590757/article/details/80233901
计算机网络又是另一门课,推荐 CS168,这课暂时也和我没什么关系。。。
后面的不读了,有机会认真扫一遍 MIT6.824 再来解读。