piboye
2022-01-18
三阶段提交是我看过课程里讲的最好的,给老师一个赞
8
扭高达💨🌪
2021-10-15
思考题: 协调者应该是client端😂
共 2 条评论
3
leslie
2021-10-26
《数据密集型应用系统设计》此书算是近年相对的经典,已经看了近十遍,总觉得自己理解的浅。中文版的翻译质量算是难得的上品,老师是看中文版还是英文版,是不是版本翻译中还是有欠缺?总觉得有些点没有提及到,不知道是不是翻译的问题,图倒是原版继承了。
2
在路上
2021-10-25
徐老师好,在两阶段提交这个策略下,一旦 Backup Master 节点出现问题,其实整个系统都是不能写入的。听起来意味着 Master 和 Backup Master 都不能出现故障,那 Backup Master 只是在增加出现故障的概率。如果需要提升可用性,为什么不在 Backup Master 出现问题的时候只写 Master ,等 Backup Master 恢复后再同步数据?两阶段提交和三阶段提交的根本问题在于单点故障,要解决这个问题应该需要用一个集群提供协调者服务, Backup Master 可以从一组节点中选举。 回到老师的思考题,我看到有的学友说是 client 是协调者,有的学友说 Backup Master 是协调者,我觉得如果两阶段提交的所有请求都要经过协调者,协调者应该是Master或者其他服务。如果 client 是协调者的话,没法保证多个 client 请求之间的顺序,也就是协调者应该是个单点服务。如果是 Backup Master ,那么客户端就形成了对 Backup Master 的直接依赖,也就不应该叫 Backup Master,另外选择Backup Master作为协调者并不能节省流量,因为所有的请求都要发给 Master 和 Backup Master。
展开
共 2 条评论
2
Eternal
2023-03-19
来自中国香港
二阶段和三阶段的理解和学习需要一开始就建立一个模型,协调者,参与者,提交请求,提交执行,协调者硬件故障,参与者硬件故障,两阶段或三阶段的哪一个阶段那个角色出现故障?两阶段或三阶段的哪一个阶段那两个角色通讯网络故障?只有举例模型和例子的基础上自己推演才能理解深刻且记得住。 然后用mysql大家最熟悉的事务模型中的undo、redo 日志准备好但是未真正的提交事务这个例子来类比更方便大家理解这是我自己的感悟。两阶段,三阶段,cap等基础概念看过很多次,但是要融于自己的知识体系,条件反射的说出来,且在讨论问题的时候会不假思索利用到这个还是有难度的。简单的能把理论记住,或只在讨论这个理论知识的时候能分析出来,这个都不是最终目的。
1
龚诚
2022-05-01
bookeeper、zookper
1
斜面镜子 Bill
2021-10-22
我理解是有back master充当的,一方面备不提供服务,可以优化主的性能,其次,如果主挂了起码可以把备选成主,而不至于系统不服务
1
Geek_88604f
2021-10-16
二阶段提交和三阶段提交实际很少使用了。实践中使用的都是基于使用场景的改进版,像TCC、基于MQ的一致性保证等
1
陈迪
2021-10-15
Chubby是到现在为止最难懂的论文。。一些例子和设计决策依据让人不知所云
1
dahai
2022-01-16
三阶段提交和两阶段提交最后提交之前要解决的问题是一样的,为什么说一个牺牲了可用性,一个牺牲了一致性。最起码我认为两个都是没有一致性的。最后提交阶段总会出现网络中断,服务器不稳定的情况。
共 1 条评论