基本信息

【插图】

编辑推荐
资深分布式技术专家在腾讯和Intel10余年经验总结,
华为、腾讯、阿里等企业10余位专家力荐
涵盖4大分布式系统基础理论、10种常用分布式协议与算法、
100余条互联网大规模系统实战心得、3个综合案例
作者在极客时间同内容专栏超20000人付费学习
内容简介
计算机书籍
内容介绍
这是一本以实战为导向、系统讲解分布式协议与算法、深刻揭示分布式系统精髓与本质的著作。作者以自己在腾讯和Intel的多年分布式系统工程经验为基础,用图文并茂、通俗易懂的方式详细讲解了分布式的基础理论、协议、算法,以及它们如何在工程实践中落地。
通过本书,你将掌握如下核心知识:
(1)4大分布式基础理论
详细讲解分布式架构设计的核心基础理论,包括拜占庭将军问题、CAP理论、ACID理论、BASE理论,这些理论能指导你在实战中根据场景特点选择合适的分布式算法。
(2)10种常用的分布式协议和算法
详细讲解了Paxos算法、Raft算法、一致哈希算法、ZAB协议、Gossip协议、Quorum NWR协议、MySQL XA规范、TCC、PBFT算法、PoW算法等常用分布式协议和算法的的原理、特点、适用场景和常见误区等。
(3)3大综合实战案例
通过3个综合案例讲解了分布式基础理论和分布式算法在工程实践中的应用,教你将所学知识真正落地。包括InfluxDB企业版的CP架构和AP架构的设计和背后思考,以及Raft、Quorum NWR、Anti-Entropy等分布式算法的具体实现。
作译者
韩健
资深架构师,现就职于腾讯,担任监控大数据平台技术负责人,曾先后担任创业公司CTO、Intel资深工程师。既对分布式系统、InfluxDB的架构设计和开发有深刻的理解,又在海量服务分布式组件架构设计、高性能架构设计、高质量代码编写等方面有深厚的积累,经验丰富。
在腾讯先后负责了监控大数据平台、QQ后台海量服务分布式组件(微服务开发框架、名字服务、配置中心等)等项目的相关工作。曾经主导和参与了多个高并发分布式系统、Linux内核、高性能网络操作系统等大型项目。
当前专注于下一代具有成本优势的高性能监控大数据平台、海量服务分布式组件、DPDK高性能TCPIP协议栈的创新和研发。
维护有微信订阅号influxdb-dev。
目录
序
前言
理论篇
第1章 拜占庭将军问题2
1.1 什么是拜占庭将军问题2
1.1.1 苏秦的困境3
1.1.2 二忠一叛难题3
1.2 口信消息,我们该如何处理呢5
1.3 如何解决n>(3f +1)的限制8
1.3.1 什么是签名消息8
1.3.2 签名消息型拜占庭问题之解10
1.4 拜占庭容错算法和非拜占庭容错算法,该如何选择呢16
1.5 本章小结17
第2章 CAP理论19
2.1 CAP理论:分布式系统的ph试纸,用它来测酸碱度20
2.1.1 CAP三指标20
2.1.2 CAP不可能三角24
2.1.3 如何使用CAP理论25
2.2 ACID理论:CAP的“酸”,追求一致性28
前言
你好,我是韩健,你叫我“老韩”就可以了。
在正式介绍本书内容之前,我想先和你聊聊我自己的经历,以加深你对我的了解。从重庆大学的软件工程专业毕业之后,我就开始和分布式系统打交道,至今有十多年了。早期,我使用的是电信级分布式系统,比如内核态HA Cluster,现在使用的是互联网分布式系统,比如名字服务、NoSQL存储、监控大数据平台。
我曾经做过创业公司的CTO,加入腾讯之后,负责过QQ后台海量服务分布式中间件以及时序数据库InfluxDB自研集群系统的架构设计和研发工作。
你可能会问我,为什么要单独讲分布式协议和算法呢?为简洁起见,我们下面都将其简称为分布式算法。在我看来,分布式算法其实就是决定分布式系统如何运行的核心规则和关键步骤,所以,如果一个人想真正搞懂分布式技术,开发出一个分布式系统,最先需要掌握的就是这部分知识。
举个例子,学数学的时候,我们总是会学到很多公式或者定理,开始时也会觉得这些定理枯燥至极。但渐渐地,我开始明白这些定理和公式是前人花了很长时间思考、验证、总结出来的规律,能够帮助我们更快速地找到正确答案。同样,你学习这本书也是这个道理。
分布式算法是分布式技术的核心
可能有些读者会说:“老韩,你别忽悠我,我可是系统看过分布式领域的经典书的,比如《分布式系统:概念与设计》《分布式系统原理与范型》,这些书里介绍分布式算法的篇幅可不多啊!”
是的,这也是我觉得奇怪的地方。不过,你可以看看网上关于分布式的提问,其中点击量大的问题肯定是与分布式算法相关的问题,这是不是从侧面说明了它的重要性呢?
结合我多年的经验来看,很多读者读了那几本厚重的经典书之后,在实际工作中还是会不知所措。我想,如果他们来问我,我会建议他们先把各种分布式算法搞清楚。因为学习分布式系统时最最重要的事情,就是选择或设计合适的算法,解决一致性和可用性相关的问题。
尽管它是分布式技术的核心与关键,但实际掌握它的人或者公司却很少。下面我来说个真实的事儿。
我刚刚提到的InfluxDB其实是一个开源的时序数据库系统,当然,开源的只是单机版本,如果你要使用集群功能,要么基于开源版本自研,要么购买别人开发的企业版本。
而这里面,企业版本一个节点一年License授权费就是1.5万美元,是不是很贵?那贵在哪里呢?相比单机版本,企业版本的技术壁垒又是什么?
结合我的亲身经验来看,企业版本的护城河就是以分布式算法为核心的分布式集群能力。
我知道有很多技术团队曾经试图自己实现InfluxDB企业版本的功能,但最后还是放弃了,因为这里面问题太多了。比如,在实现集群能力的时候,我们应该怎样支持基于时序进行分片?怎样支持水平扩展?再比如,有些人在接入性能敏感、应该使用反熵(Anti-Entropy)算法的场景中使用了Raft算法,使得集群性能约等于单机性能。
可以看到,分布式系统的价值和意义的确很大,如果不能准确理解分布式算法,我们不仅无法保障开发实现的分布式系统的稳定运行,还会因为种种现网故障,逐渐影响到职业发展,丧失职场竞争力。
再说点儿更实际的,现阶段,掌握分布式算法也是你在面试架构师、技术专家等高端岗位时的敲门砖。你可以搜索看看,那些知名公司在招聘架构师或者高级工程师时,是不是在岗位要求中写着熟悉分布式算法相关理论等内容?不过从我作为面试官的经验来看,懂这部分的候选人实在是少之又少。
说了这么多,我只是想强调,不管你是基于技术追求的考虑,还是基于长期职业发展和提升职场竞争力的考量,分布式算法都是你在这个时代应该掌握的基本功。
当然,我也知道分布式算法确实比较难学,主要原因有以下几点。
除了算法本身比较抽象、不容易理解之外,即使是非常经典的论文也存在一些关键细节没有讲清楚的情况。以你比较熟悉的拜占庭将军问题为例,在阅读口信消息型拜占庭问题之解时,你是不是感到很吃力呢?关于这部分内容,论文并没有讲清楚,不过我会在本书的第1章带你了解这些内容。
媒体评论
——赵建春腾讯云副总裁
企业数字化、智能化转型,除了需要机器学习、知识图谱等技术,还需要端、管、云,而实现端、管、云,就离不开各种各样的可用性、一致性技术。本书图例丰富、文字风趣,是作者多年一线实战的经验总结,无论是初学者还是从业者,都能从中获益。
——李旭阳富途证券研发副总裁
数据是工业革命的重要原料,数据驱动“万物”,但如何实时、高可用、数据高可靠、低成本地支撑海量数据的分析,仍是业界努力的方向。而要解决这些问题,活学活用分布式技术就非常重要。丰富的实践经验、对分布式协议与算法的深入思考,是本书的两大特点,也是韩健严谨工作、对技术深入研究的体现。希望本书能帮助更多读者掌握分布式技术,在日常工作中创造更大价值。
——苏元明UCloud(优刻得)技术副总裁
一部互联网发展史,就是一部解决可用性、一致性问题的历史,以“简洁、有效”为中心的腾讯经验就是其中的代表。这本书包含了在实际场景中克服种种技术挑战而凝结的腾讯经验,可帮助广大同行在设计和实现大规模分布式系统时举一反三、活学活用。
——傅鸿城腾讯音乐技术副总裁