分布式协议与算法实战
韩健
腾讯资深工程师
23193 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 31 讲
分布式协议与算法实战
15
15
1.0x
00:00/00:00
登录|注册

学习路径 | 分布式协议与算法你应该这么学

总结
专栏内容该如何学
分布式算法的四度空间
分布式算法的发展历程
怎么学
分布式协议与算法学习

该思维导图由 AI 生成,仅供参考

你好,我是韩健。
在正式开始学习这门课之前,我想先和你聊一聊怎么学,因为掌握了学习路径、建立了全局观之后,你才能达到事半功倍的效果。
我们都知道,分布式协议和算法(为了不啰嗦,咱们下文都简称分布式算法)很实用、也很火,很多后端工程师在面试的时候,都会被问及分布式、高可用、一致性这些专业名词背后的算法原理和实现方式。
但是分布式算法也是比较新的,快速发展的。比如,1989 年莱斯利·兰伯特(Leslie Lamport)提出了 Paxos,2006 年,谷歌研发团队让 Paxos 在生产环境中落地,但是 Paxos 缺乏编程实现的必须细节,最终的算法实现仍是建立在一个未证明的算法之上。再后来,也就是到了 2013,斯坦福大学的迭戈·安加罗(Diego Ongaro)和约翰·奥斯特霍德(John Ousterhout)提出了 Raft,但是 2016 年,Raft 仍在解决成员变更的 Bug。
正因为技术比较新,所以尚未能沉淀为书,很多同学都找不到分布式算法方面的经典书籍,再加上互联网上中文资料错误多,他们在学习相关的分布式算法的时候,会觉得吃力和困惑。
那么,如何才能掌握一个相对新、而且又在蓬勃快速发展的技术知识呢?这就是我这节课想要跟你分享的内容:如何高效地学习和掌握分布式算法?
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了分布式协议与算法的重要性和应用。文章从拜占庭容错、一致性、可用性和性能等四个纬度的特点出发,介绍了各种算法在不同场景下的适用性。强调了学习分布式算法的重要性,并提出了高效学习的方法。建议根据场景特点选择合适的算法,理解各算法的特点,以便在开发分布式系统时能够灵活选择适合的算法解决实际问题。此外,还介绍了拜占庭容错、一致性、可用性和性能等四个纬度的特点,以及各种算法在不同场景下的适用性。通过对这些内容的了解,读者可以更好地理解分布式算法的特点,提高学习效率,同时在实际场景中灵活应用相关算法。文章还提到了实战中的重要性,强调了技术需要在实战中学习,带领读者剖析了一致性实现和流行的Raft实现,最终带领读者使用API接口开发实现自己的分布式KV系统。总结指出,学习分布式算法是一项意义非凡的事情,鼓励读者在学习过程中多留言,一起攻克分布式系统设计的关键难题。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《分布式协议与算法实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(20)

  • 最新
  • 精选
  • 小何
    “一般而言,在需要系统状态的一致性时,你可以考虑采用二阶段提交协议、TCC。在需要数据访问是的强一致性时,你可考虑 Raft 算法。在可用性优先的系统,你可以采用 Gossip 协议来实现最终一致性,并实现 Quorum NWR 来提供强一致性。” 老师,能解释一下上文中的需要系统状态的一致性和数据访问的一致性?

    作者回复: 加一颗星:),系统状态的一致性,可以理解为操作要么全部成功,要么全部失败,各节点处于一个一致的状态;数据访问的一致性,可以理解为写操作完成后,能否读取到最新数据,如果写操作完成后,读操作都能读取到最新数据,那么就是强一致性。

    2020-10-08
    5
    18
  • 返璞归真
    在四度空间的表格中,TCC应该是强一致性吧。在一致性标题下,还强调了强一致性的两种不用理解。前后有矛盾呀

    作者回复: 加一颗星:),TCC最终一致性,指的是系统状态的最终一致。

    2020-08-03
    2
    1
  • 密码123456
    😂😂在回头看的时候,发现自己只记得大概。正好复习下。

    作者回复: 加一颗星:),学而时习之不亦说乎,有问题多留言,咱们多交流。

    2020-07-04
  • Geek.Kwok
    老师的总结很棒,给我们指明了学习和实践的框架

    作者回复: 学习中,遇到问题,多留言交流,一起解决:)

    2020-07-03
  • 赵学习
    为什么大多数人都说zk是cp的,有说强一致的,又说顺序一致的,这里又说zab是最终一致的,希望后面阅读中能找到合适的答案!
    2021-04-23
    3
    13
  • 离境”
    之前看其他文章,搞得自己云里雾里的,希望在这拨开云雾
    2021-06-07
    4
  • 庄周梦蝶
    老师分布式的脑裂问题、羊群问题能讲讲吗?面试中经常问到
    2021-06-13
    1
    2
  • --
    我觉得线性一致性有点绕,所以补充一个线性一致性的说明:https://en.wikipedia.org/wiki/Consistency_model#Sequential_consistency 线性一致性是属于强一致性的,但是它是“稍弱”的强一致性,因为在算法系统的内部,写操作的提交并不是所有的节点都是同时应用的。而系统状态的一致性,写操作的提交是同时应用的,所以它是“稍强”的一致性。之所以说它们都是强一致的,那是因为一致性是对外部系统访问算法系统而言,只有写操作提交之后,外部系统都能读取到最新的值。如有不正确之处,麻烦指教。
    2020-08-30
    2
    2
  • 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归属地:陕西
收起评论
显示
设置
留言
20
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部