身为后端工程师,你对这类招聘要求肯定不陌生:熟悉分布式系统的设计和应用;熟悉分布式、缓存、消息、搜索等机制;对分布式常用技术进行合理应用、解决问题等等。
而这其中,又以分布式协议与算法尤甚。很多大公司在招聘架构师或高级工程师时,都要求熟悉这部分内容。面试官不仅要考察其原理和运行机制,还有面试者对这类问题在架构设计层面的理解,以及具体场景下的应用。
但以我作为面试官的经验看,真正搞懂这部分的候选人少之又少。
其实,分布式协议与算法(下面简称分布式算法)是分布式系统运行的核心规则和关键步骤,想参透分布式技术、开发一个分布式系统,最先要掌握的就是这部分知识。
以 InfluxDB 为例,很多技术团队试图自己实现 InfluxDB 的集群功能,但最终都放弃了。因为这里面的坑实在太多,甚至有人在接入性能敏感的场景,该使用反熵(Anti-Entropy)算法时,却用了 Raft 算法,使得集群性能约等同于单机。
如果你要使用集群功能,又做不到基于开源版本自研,就只能购买人家的企业版。要知道,企业版每个节点的 License 授权费就要 1.5 万美刀/年,具体贵在哪?它的护城河就是以分布式算法为核心的分布式集群能力。
由此可见,真正掌握分布式算法的人并不多。大多数人只是会用分布式系统,却并不具备分布式系统的独立开发能力。
所以,不论是基于工作需要,还是想寻求长期职业发展、提升职场竞争力,分布式算法作为分布式系统的核心,都是你在这个时代应该掌握的基本功。
如何高效学习分布式算法?
如果你留心观察,会发现有不少人看了很多资料和书籍,涉及到具体问题,照样一头雾水,比如:
• 拜占庭错误是怎么回事?为什么区块链用拜占庭容错算法?Paxos 算法不行吗?能黑比特币吗?
• 想要实现数据副本的一致性,到底该选 Paxos 算法,还是 Raft 算法?
• 为什么我的集群接入性能低?稍微出现峰值流量,为什么业务就基本不可用了?
• 如何设计分布式系统架构呢?那么多算法,Paxos、Raft、Gossip、Nuorum NWR、PBFT 等等,究竟该选择哪个?
其实,算法相对抽象,即使是非常经典的论文,也有一些关键细节没有交代清楚。而网上的信息大多是“复制粘贴”的结果,甚至有不少错误,给自主学习带来了很多障碍和误导。
在我看来,要掌握这部分内容,不仅要理解常用算法的原理、特点和局限性,还要根据场景特点选择适合的分布式算法。
刚好,我这里有一份《从Paxos到Zookeeper 分布式一致性原理与实践》的学习文档,也是来之不易。
本书从分布式一致性的理论出发,向读者简要介绍几种典型的分布式一致性协议,以及解决分布式一致性问题的思路,其中重点讲解了 Paxos和ZAB协议。同时,本书深入介绍了分布式一致性问题的工业解决方案一ZooKeeper,并着重向读者展示这一分布式协调框架的使用方法、内部实现及运维技巧,旨在帮助读者全面了解ZooKeeper,并更好地使用ZooKeeper。
本书共分为五大部分,八个章节
第一部分(第1章)主要介绍了计算机系统从集中式向分布式系统演变过程中面临的挑战,并简要介绍了 ACID、CAP和BASE等经典分布式理论
第1章 分布式架构
- 从集中式到分布式
- 从ACID到CAP/BASE
第二部分(第2〜4章)介绍了 2PC、3PC和Paxos三种分布式一致性协议,并着重讲解了 ZooKeeper中使用的一致性协议——ZAB协议
第2章 一致性协议
- 2PC与3PC
- Paxos算法
第3章 Paxos的工程实践
- Chubby
- Hypertable
第4章 ZooKeeper与Paxos
- 初识ZooKeeper
- ZooKeeper的ZAB协议
第三部分(第5〜6章)介绍了 ZooKeeper的使用方法,包括客户端API的使用以及对ZooKeeper服务的部署与运行,并结合真实的分布式应用场景,总结了 ZooKeeper使用的最佳实践
第5章 使用ZooKeeper
- 部署与运行
- 客户端脚本
- Java客户端API使用
- 开源客户端
第6章 ZooKeeper的典型应用场景
- 典型应用场景及实现注
- ZooKeeper在大型分布式系统中的应用
- ZooKeeper在阿里巴巴的实践与应用
第四部分(第7章)对ZooKeeper的架构设计和实现原理进行了深入分析,包含系统模型、Leader选举、客户端与服务端的工作原理、请求处理,以及服务器角色的工作流程和数据存储等
第7章 ZooKeeper技术内幕
- 系统模型
- 序列化与协议
- 客户端
- 会话
- 服务器启动
- Leader选举
- 各服务器角色介绍
- 请求处理
- 数据与存储
第五部分(第8章)介绍了 ZooKeeper的运维实践,包括配置详解和监控管理等,重点讲解了如何构建一个高可用的ZooKeeper 服务。
第8章 ZooKeeper运维
- 配置详解
- 四字命令
- JMX
- 监控
- 构建一个高可用的集群
- 日常运维
这本书是迄今为止对 分布式协议与算法 讲解的最详细,最全面,最理论结合实践的资料。而且图文并茂,理论结合实战,通俗易懂。
目录大纲
由于目录太多,这里只截取部分的目录内容。需要这本书的“电子版”资料的小伙伴,可以点击【免费获取】即可



总目录


网友评论