描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787113282219
从基础知识点到底层原理再到落地实践,步步为营地透彻解析Kubernetes平台默认容器注册与发现组件,旨在帮助读者有效解决分布式系统中的数据一致性问题。
近年来,容器和云原生生态蓬勃发展。如何实现数据分布式、一致性存储,确保云原生环境的可扩展性和高可用性,是亟须解决的现实问题。云计算时代,etcd 将成为云原生和分布式系统的基石,三个关键因素是分布式一致性raft 协议、Go语言和生态。正是因为etcd 在云原生时代的火热,越来越多的公司在系统服务中新引入etcd,或者替代原有的类似组件,如ZooKeeper、Consul、Eureka 等。本书的内容也正是聚焦于如何正确部署和运维etcd 集群,理解etcd 实现的原理并对etcd 集群进行优化,以及在开发层面如何正确调用etcd 客户端API 接口实现一致性存储等功能。
写作背景
互联网应用经历了从早期单一架构到垂直架构,再到分布式架构的技术发展过程。在业务体系不断发展变化,用户体量和性能要求远非传统行业所能比拟的当下,越来越多的公司跨入了分布式、云原生架构的行列,分布式架构成为主流趋势。
但分布式架构系统面临着一些与生俱来的问题,比如部署复杂、响应时间长、运维复杂等,其中根本的是多个节点之间的数据共享问题。面对这些问题,你可以选择自己实现一个可靠的共享存储来同步信息,或者是依赖一个可靠的共享存储服务。
至于可靠的共享存储服务,etcd是一个优秀的可选项。etcd是一款分布式存储中间件,使用Go语言编写,并通过raft一致性算法处理和确保分布式一致性,解决了分布式系统中数据一致性的问题。
etcd在分布式架构和云原生时代落地实践;作为一款分布式、可靠的键值存储组件,etcd常用于微服务架构中的服务注册与发现中心,相较于ZooKeeper部署更简单,而且具有数据持久化、支持SSL客户端安全认证的独特优势。
此外,由于etcd中涉及了数据一致性、多版本并发控制、Watch监控、磁盘I/O读写等知识点,深入学习etcd可以帮助我们从开源项目中学习底层原理,进一步提高分布式架构设计的能力。
除了分布式架构中的应用,etcd还是目前非常热门的云原生存储组件,它自2018年底作为孵化项目加入CNCF(云原生计算基金会),并于2020年11月成功“毕业”。
我们都知道,上“云”的过程必然是曲折的。以笔者所在的在线教育行业为例,从原有的单体业务改造到逐步替换成云原生架构,其中花费的人力、时间成本都很大,这不仅与实际的业务复杂度、升级的决心有关,更关乎技术复杂度,在线课程直播场景甚至要求架构实现高性能、高并发和高可用性,这些都远远超出传统单体应用的设计和开发范畴。
etcd作为云原生架构中重要的基础组件,各个微服务之间通过etcd保证调用的可用性和正确性。其他许多知名项目(包括Kubernetes、CoreDNS和TiKV等)也都依赖etcd来实现可靠的分布式数据存储,它的成功可见一斑。
IBM开放技术高级软件工程师兼etcd维护者Sahdev Zala也指出:“etcd在提供分布式键-值存储方面发挥着关键作用。其存储功能不仅具有很高的可用性,而且能够满足大规模Kubernetes集群所提出的强一致性要求。”
etcd不断提高的普及率、开放的治理以及完善的功能成熟度使它在云原生时代大受青睐,也因此被越来越多的公司在系统服务中引入,甚至替代原有的类似组件(如ZooKeeper、Consul、Eureka等)。目前,etcd已被许多公司用于生产,包括阿里巴巴、亚马逊、百度、Google等。
本书主要内容
当前,云原生架构逐步成为系统架构的主流,由于其可以大大提升产品的开发迭代效率,降低运维和硬件成本;因此企业要不要上“云”已不再是一个艰难的选择题,而成为必然趋势。etcd作为分布式架构下的一款优秀组件,在云原生时代更是大放异彩,成为Kubernetes平台默认的容器注册与发现组件。
希望通过etcd学习分布式组件的“道”,掌握学习之道会在后续的自我提升中发挥长期价值。无论在将来的面试还是开发中,切中分布式系统开发的要点,并将原理和应用结合起来,才能充分体现个人的核心竞争力。
本书围绕etcd组件,从基础知识点到底层原理全面深入地展开介绍,主要包含如下的三个模块。
(1)基础概念与操作篇
首先浅谈云原生架构背景,分布式系统中如何保证一致性;接着介绍etcd是一款什么样的组件、etcd相关的特性、应用场景、部署的方式,还包括了客户端命令行工具的使用以及etcd通信加密TLS。初步了解etcd的这些基本使用以及核心API,为后面的学习打下基础。
(2)etcd实现原理与关键技术篇
介绍etcd的工作方式与内部实现原理,并重点介绍etcd的etcd-raft模块、WAL日志与快照备份、多版本控制MVCC、backend存储、事务实现、Watch和Lease机制等,后梳理etcd Server的启动流程,以及如何处理客户端请求。通过这一模块的学习,可以帮助我们从原理层面深入了解etcd的工作机制以及整体架构,同时将有助于后续二次开发或者排查遇到的问题。
(3)实践案例篇
在掌握了etcd相关知识点的情况下,在应用实践部分将会带你学习etcd clientv3的具体应用,包括如何基于etcd实现分布式锁应用,以及如何在微服务中集成etcd作为服务注册与发现中心;后我们会分析在Kubernetes中如何基于etcd完成容器的调度。
适合哪些读者
服务端开发的工程师,往往会使用部分分布式组件,但是对分布式系统的实现原理,对分布式组件的实现细节不清楚。这种情况阻碍了他们完成高质量的开发任务、提升个人能力以及职业晋升。etcd是云原生架构下的重要组件,从学习etcd开始,在了解etcd的基础上更容易快速熟悉分布式系统实现的一些细节和原理。
本书适合具有分布式基础,且正在从事分布式系统开发的工程师、微服务开发者、分布式系统的架构师和运维人员学习,特别适合正在基于etcd进行相关实践和二次开发的工程师。对云原生架构感兴趣的同学通过本书也可以学习到分布式系统的原理与实践。建议读者在阅读本书时首先了解基本的Go语言语法,推荐本书同系列其他图书《深入Go语言开发与实践》以及《Go语言高并发与微服务实战》。
源代码获取
纸上得来终觉浅,绝知此事要躬行。
毋庸置疑,读者学习和掌握etcd的目的是提升实践工作的技能,因此笔者非常希望本书的读者在阅读书中知识点并理解作者实践思路的同时,将书中的实现代码和示例代码根据自己的理解程度进行实践操作,这样可以更透彻地了解书中所讲知识,并通过动手实践检查自己的不足,深刻领会源码内涵;因此笔者将书中源代码打包整理,倾囊相送;读者可以通过如下的地址获取使用:
https://github.com/longjoy/etcd-book-code
作者团队与致谢
本书由朱荣鑫、刘峰共同完成。全书由朱荣鑫统稿。本书的完成需要感谢很多朋友和同行的倾力帮助,感谢笔者的好友张天和黄迪璇在本书撰写前后提供了很多内容组织方面的建议;感谢公众号的读者袁洋与王金怀利用休息时间帮忙审稿,提出了宝贵的意见,帮助进一步完善了本书的内容,给了笔者很多实质性的指导;感谢拉勾教育平台以及编辑佟可欣老师,其出品的《etcd原理与实践》课程帮助笔者积累了大量etcd写作的素材,本书也是对课程内容的进一步完善。
写书是一件枯燥的事情,一本书从想法、策划到出版非常不易,编辑老师给了笔者很大的信心和帮助。在内容和结构组织上,笔者同本书责任编辑荆波老师进行了多次讨论和校正,因此特别感谢中国铁道出版社有限公司为本书的出版所作的努力。
ITetcd
评论
还没有评论。