学习路径 | 分布式协议与算法你应该这么学
韩健
该思维导图由 AI 生成,仅供参考
你好,我是韩健。
在正式开始学习这门课之前,我想先和你聊一聊怎么学,因为掌握了学习路径、建立了全局观之后,你才能达到事半功倍的效果。
我们都知道,分布式协议和算法(为了不啰嗦,咱们下文都简称分布式算法)很实用、也很火,很多后端工程师在面试的时候,都会被问及分布式、高可用、一致性这些专业名词背后的算法原理和实现方式。
但是分布式算法也是比较新的,快速发展的。比如,1989 年莱斯利·兰伯特(Leslie Lamport)提出了 Paxos,2006 年,谷歌研发团队让 Paxos 在生产环境中落地,但是 Paxos 缺乏编程实现的必须细节,最终的算法实现仍是建立在一个未证明的算法之上。再后来,也就是到了 2013,斯坦福大学的迭戈·安加罗(Diego Ongaro)和约翰·奥斯特霍德(John Ousterhout)提出了 Raft,但是 2016 年,Raft 仍在解决成员变更的 Bug。
正因为技术比较新,所以尚未能沉淀为书,很多同学都找不到分布式算法方面的经典书籍,再加上互联网上中文资料错误多,他们在学习相关的分布式算法的时候,会觉得吃力和困惑。
那么,如何才能掌握一个相对新、而且又在蓬勃快速发展的技术知识呢?这就是我这节课想要跟你分享的内容:如何高效地学习和掌握分布式算法?
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文介绍了分布式协议与算法的重要性和应用。文章从拜占庭容错、一致性、可用性和性能等四个纬度的特点出发,介绍了各种算法在不同场景下的适用性。强调了学习分布式算法的重要性,并提出了高效学习的方法。建议根据场景特点选择合适的算法,理解各算法的特点,以便在开发分布式系统时能够灵活选择适合的算法解决实际问题。此外,还介绍了拜占庭容错、一致性、可用性和性能等四个纬度的特点,以及各种算法在不同场景下的适用性。通过对这些内容的了解,读者可以更好地理解分布式算法的特点,提高学习效率,同时在实际场景中灵活应用相关算法。文章还提到了实战中的重要性,强调了技术需要在实战中学习,带领读者剖析了一致性实现和流行的Raft实现,最终带领读者使用API接口开发实现自己的分布式KV系统。总结指出,学习分布式算法是一项意义非凡的事情,鼓励读者在学习过程中多留言,一起攻克分布式系统设计的关键难题。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《分布式协议与算法实战》,新⼈⾸单¥59
《分布式协议与算法实战》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(20)
- 最新
- 精选
- 小何“一般而言,在需要系统状态的一致性时,你可以考虑采用二阶段提交协议、TCC。在需要数据访问是的强一致性时,你可考虑 Raft 算法。在可用性优先的系统,你可以采用 Gossip 协议来实现最终一致性,并实现 Quorum NWR 来提供强一致性。” 老师,能解释一下上文中的需要系统状态的一致性和数据访问的一致性?
作者回复: 加一颗星:),系统状态的一致性,可以理解为操作要么全部成功,要么全部失败,各节点处于一个一致的状态;数据访问的一致性,可以理解为写操作完成后,能否读取到最新数据,如果写操作完成后,读操作都能读取到最新数据,那么就是强一致性。
2020-10-08518 - 返璞归真在四度空间的表格中,TCC应该是强一致性吧。在一致性标题下,还强调了强一致性的两种不用理解。前后有矛盾呀
作者回复: 加一颗星:),TCC最终一致性,指的是系统状态的最终一致。
2020-08-0321 - 密码123456😂😂在回头看的时候,发现自己只记得大概。正好复习下。
作者回复: 加一颗星:),学而时习之不亦说乎,有问题多留言,咱们多交流。
2020-07-04 - Geek.Kwok老师的总结很棒,给我们指明了学习和实践的框架
作者回复: 学习中,遇到问题,多留言交流,一起解决:)
2020-07-03 - 赵学习为什么大多数人都说zk是cp的,有说强一致的,又说顺序一致的,这里又说zab是最终一致的,希望后面阅读中能找到合适的答案!2021-04-23313
- 离境”之前看其他文章,搞得自己云里雾里的,希望在这拨开云雾2021-06-074
- 庄周梦蝶老师分布式的脑裂问题、羊群问题能讲讲吗?面试中经常问到2021-06-1312
- --我觉得线性一致性有点绕,所以补充一个线性一致性的说明:https://en.wikipedia.org/wiki/Consistency_model#Sequential_consistency 线性一致性是属于强一致性的,但是它是“稍弱”的强一致性,因为在算法系统的内部,写操作的提交并不是所有的节点都是同时应用的。而系统状态的一致性,写操作的提交是同时应用的,所以它是“稍强”的一致性。之所以说它们都是强一致的,那是因为一致性是对外部系统访问算法系统而言,只有写操作提交之后,外部系统都能读取到最新的值。如有不正确之处,麻烦指教。2020-08-3022
- abcdabcd999我觉得不应该把 2PC 和 Paxos、raft 这些放一起说,它们本质上是不同的,共识只是 log replication的,它和 2PC 完全不一样2023-01-16归属地:山西1
- geektime_zpf“ 首先,在埃里克·布鲁尔的猜想中,CAP 中的强一致性(也就是 C)是指 ACID 的 C,系统状态的一致性,而这种一致性,可以通过二阶段提交协议来实现。 其次,在 CAP 定理中,CAP 中的强一致性(也就是 C)是指原子一致性(也就是线性一致性)。其中,Paxos、Raft 能实现线性一致性,而 ZooKeeper 基于读性能的考虑,它通过 ZAB 协议提供的是最终一致性。一般而言,在需要系统状态的一致性时,你可以考虑采用二阶段提交协议、TCC。 在需要数据访问是的强一致性时,你可考虑 Raft 算法。在可用性优先的系统,你可以采用 Gossip 协议来实现最终一致性,并实现 Quorum NWR 来提供强一致性。 ” 老师,数据访问一致性,和 原子一致性(线性一致性),是什么关系呢2023-11-05归属地:陕西
收起评论