这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天
今天的好硬核,干货太多,吃着噎......(主要还是蔡,555).所以今天就简单做一下课后题吧,还有好多事要做.
课后题
1.分布式系统有哪些优势和挑战?
- 优势
- 去中心化,低成本,弹性,资源共享,可靠性高.
- 挑战
- 普遍的节点故障,不可靠的网络,异构机器硬件环境,安全性
2.两将军问题为什么理论上永远达不成共识?
- 无论进行多少轮确认,都无法使两位将军确保对方已同意进攻计划。两位将军总是会怀疑他们派遣的最后一位使者是否顺利穿过敌方领土。
3.为什么TCP采用三次握手?而不是两次和四次?
- 为了实现可靠数据传输, TCP 协议的通信双方, 都必须维护一个序列号, 以标识发送出去的数据包中, 哪些是已经被对方收到的。 三次握手的过程即是通信双方相互告知序列号起始值, 并确认对方已经收到了序列号起始值的必经步骤.如果只是两次握手, 至多只有连接发起方的起始序列号能被确认, 另一方选择的序列号则得不到确认.
4.为什么在4将军问题中,增加1轮协商就可以对抗拜占庭故障?
- 考虑当4个将军,只有1个叛徒的场景。将军D作为消息分发中枢,约定如果没收到消息则执行撤退。
- 如果D为“叛徒”,ABC无论收到任何消息,总能达成一致
- D为“忠将”,ABC有2人将D的消息进行正确的传递,同样能保证最终决策符合大多数。 进而能够证明,当有3m+1个将军,其中m个“叛徒”时,可以增加m轮协商,最终达成一致
5.什么是最终一致性?什么是线性一致性?
- 所谓最终一致性,是弱一致性的一种特例,保证用户最终能够读取到某操作对系统特定数据的更新。 但是随着时间的迁移,不同节点上的同一份数据总是在向趋同的方向变化。 也可以简单的理解为在一段时间后,节点间的数据会最终达到一致状态。
- 线性一致性 (Linearizability),或称 原子一致性 或 严格一致性, 指的是程序在执行的历史中在存在可线性化点P的执行模型,这意味着一个操作将在程序的调用和返回之间的某个点P起作用。
6.待续...
CAP理论中,请举例说明可用性和一致性的矛盾? 数据库里的一致性和分布式系统中的一致性有什么区别? 两阶段提交中,什么场景需要数据库管理员介入? 三阶段提交缓和两阶段提交的哪两个问题? 什么场景适合乐观锁?什么场景适合悲观锁? 在共识协议中,为什么说允许数据被覆盖会带来数据一致性问题? RAFT协议中,Leader写成功日志Log20但未同步给Followers后宕机,Follower重新选举后产生一条新日志Log20,这时Leader重启,整个系统发现两种不一样的Log20的记录,请问如何区分并拒掉前面的Log20? RAFT协议中,Stale读是如何产生的?该如何解决Stale读的问题?