基本信息
- 出版社 : 机械工业出版社; 第1版 (2018年11月13日)
- 出版日期 : 2018年11月1日
- 品牌 : 北京华章图文信息有限公司
- 语言 : 简体中文
- 文件大小 : 6662 KB
- 纸书页数 : 365页
- 杨章显 (作者)
- 下载格式:azw3、epub、mobi
内容简介
这是一部面向生产实践环境的Service Mesh实战指南,它讲解了如何基于Linkerd和Kubernetes开发和部署微服务。作者是思科的高级工程师,是国内Service Mesh领域的先驱者,较早将Linkerd应用到了生产实践中。书中详细介绍了Linkerd能解决什么样的问题,会给开发和运维人员带来什么样的好处。融合作者使用Linkerd的一些经验和教训,详细阐述了如何配置、部署和管理Linkerd以及在Kubernetes平台运行微服务,并且讲述了如何开发自定义Linkerd插件实现特定功能。通过这一系列内容的学习,读者将理解Linkerd的工作原理,甚至对学习或者开发他Service Mesh也具有深刻的借鉴意义。
前言
前言
为什么要写这本书
2016年年初,位于旧金山的一家初创公司Buoyant开源了一款产品——Linkerd。对IT界来说,每天都会发生很多类似的事情,各种新技术、新产品日新月异、层出不穷,开源一款产品几乎是微不足道的事情。但就是Buoyant的Linkerd,开启了一个新的时代——Service Mesh(服务网格)时代,成为微服务和云原生应用的引爆点,为微服务和云原生应用在企业的推广、应用和普及提供了更好的支撑点。
事实上,微服务架构已经被不少公司采纳,而云原生应用是在容器化技术和公有云平台的广泛发展下衍生出来的技术架构。但是,无论是微服务还是云原生应用架构,都面临一些不可避免的问题:如何提高应用系统的稳定性和可靠性;如何保证系统的可扩展性、容错及健壮性;如何增强系统的可见性、可管理性及安全性等。说到底,为什么Linkerd的出现会成为引爆点?主要是因为Linkerd引入的Service Mesh概念使得我们可以使用更加通用、灵活的方法解决上述问题。这也是随后多种Service Mesh产品的出现以及多家云服务提供商也支持Service Mesh的原因。Linkerd作为Service Mesh的开山鼻祖,据其官网介绍,目前已经被全球多家公司采纳,运行在产线环境为客户提供各种服务。因此,很有必要学习和了解Linkerd的工作原理,以此解决工作环境中遇到的问题,以及借鉴其设计精华开发自己的Service Mesh产品。
幸运的是,在2016年年底,我所在的公司正好要将一些服务进行微服务化,尝试新的技术架构带来的好处和优势,因此在进行技术方案选型的时候Linkerd就成为我们的主要目标,并最终选择Linkerd作为我们微服务平台中非常重要的组件。使用Linkerd之后,实实在在地给我们带来不少好处和优势。
首先,使得我们的应用开发工程师可以专注于业务逻辑的实现,避免将精力分散到服务与服务间可靠通信的实现和其他额外工作上。
其次,Linkerd使得我们的微服务运行时状态可见性更高。在此之前,如果需要获取服务运行时的状态信息,比如P99时延、请求处理成功率、失败率及当前连接数等,需应用本身暴露这些信息才行,否则,获取并不容易。
再次,Linkerd为我们在不同环境进行测试提供了更加便利的方法,比如,通过其运行时动态切换流量的功能可实现不同环境间流量的切换。
最后,Linkerd使得开发人员无须担心多语言支持的问题。
当然,Linkerd还带来了其他好处,在此就不一一赘述了。
作为一本纯技术的书籍,希望可以引导和帮助大家学习并在实际环境中使用Linkerd和其他Service Mesh产品,推广Service Mesh产品及技术不断向前发展,让Service Mesh能切实解决我们面临的问题。
读者对象
·微服务和云原生开发人员
·Devops工程师
·SRE工程师
·业务运维工程师
本书特色
作为业界早期的以Linkerd作为Kubernetes的Service Mesh工具的实战指南,本书将教你如何通过Linkerd在Kubernetes平台实现服务间可靠、安全、可控制地通信,增加服务的运行时可见性。
如何阅读本书
本书分为三大部分:
第一部分为基础篇,简单介绍Service Mesh产生的原因、Service Mesh能解决现有架构中什么样的问题以及业界有哪些Service Mesh产品可供选择,最后介绍Linkerd目前的使用状况、提供哪些功能、如何安装和配置,以及如何使用Linkerd进行服务通信。
第二部分为中级篇,着重讲解如何配置Linkerd使其实现各种高级功能、阐述Linkerd的数据流工作机制,以及如何根据应用场景选择Linkerd支持的部署模式和通过控制平面Namerd管理多个Linkerd实例等。
第三部分为实战篇,在这一部分,我们用一章的篇幅讲述Kubernetes的基本知识和概念,以帮助一些不了解Kuberentes的读者对Kubernetes有简单的认识,有利于后续内容的学习;有Kubernetes相关基础的读者,可跳过此章内容。剩下的章节便是通过实例演示Linkerd的工作机制,以及带领大家开发自定义的Linkerd插件以满足特定应用的需求。
勘误和支持
由于作者的水平有限,编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。书中的所有源码均可在https://github.com/yangzhares/linkerd-in-action处找到,如果遇到任何问题,可直接在Github页面提交问题,我将尽量在线上为你提供满意的解答。另外,如果你有更多问题或者意见,欢迎将你的意见发送至我的邮箱yangzhangxian@gmail.com,期待能够得到你的真挚反馈。
致谢
感谢Buoyant公司开源Linkerd这款优秀的软件,让我有机会接触这么优秀的Service Mesh产品,还要感谢在我面临一些困惑时官方社区提供的详细答疑及解惑。
感谢我的同事陈松和杭滨,他们给我提供了很多宝贵的建议并帮我认真改稿。
感谢机械工业出版社华章公司编辑杨福川,在这将近一年的时间里始终支持我的写作,你的鼓励和帮助引导我顺利完成全部书稿。
最后感谢我的爸爸、妈妈及所有家人,感谢你们的默默支持,并时时刻刻为我灌输着信心和力量。特别是我的妻子,在这一年每天带娃做家务,辛苦了,谢谢你。还有我的宝贝女儿,谢谢你没有经常在我工作的时候来打扰我!
谨以此书献给热爱Linkerd和Service Mesh的朋友们!
杨章显
精彩书摘
1.1 微服务架构面临的一些挑战
近年来,微服务架构随着云计算技术的快速发展成为许多IT公司开发人员非常追捧和认可的一种架构设计,最主要的原因是微服务架构解决或避免了传统单体架构所面临的一些问题,例如下面这些。
·单体应用代码库庞大,不易于理解和修改,尤其是对新人显得更加明显。
·持续部署困难,由于单体应用各组件间依赖性强,只要其中任何一个组件发生更改,将重新部署整个应用,而频繁的部署将增加服务宕机的风险,因此频繁地进行部署几乎不可能。
·扩展应用困难,单体应用只能从一个维度进行扩展,即很容易通过增加实例副本提供处理能力。另一方面,单体应用各个组件对资源的使用情况需求不同,一些是CPU密集型,另一些是内存密集型,但是不能独立地扩展单个组件。
·阻碍快速开发,随着公司业务的发展,单体服务框架变得更加庞大,更多的部门将会参与系统的开发,但是各个部门又不能独立开发、维护相应的模块,即使其中一个部门完成相应的更新,仍然不能上线,因此需要花费更多时间在部门间协调和统一。还有,需要增加新的功能时,单体应用最初的设计限制开发人员灵活选择开发语言、工具等,导致新功能上线慢。
·迫使开发人员长期专注于一种技术栈,由于单体应用本身设计的原因,后期引入新的技术栈需要遵循最开始的设计,因此存在非常大的局限性、挑战性,否则可能需要重写整个框架。