为什么要写这本书
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页面提交问题,我将尽量在线上为你提供满意的解答。另外,如果你有更多问题或者意见,欢迎将你的意见发送至我的邮箱
[email protected],期待能够得到你的真挚反馈。
致谢
感谢Buoyant公司开源Linkerd这款优秀的软件,让我有机会接触这么优秀的Service Mesh产品,还要感谢在我面临一些困惑时官方社区提供的详细答疑及解惑。
感谢我的同事陈松和杭滨,他们给我提供了很多宝贵的建议并帮我认真改稿。
感谢机械工业出版社华章公司编辑杨福川,在这将近一年的时间里始终支持我的写作,你的鼓励和帮助引导我顺利完成全部书稿。
最后感谢我的爸爸、妈妈及所有家人,感谢你们的默默支持,并时时刻刻为我灌输着信心和力量。特别是我的妻子,在这一年每天带娃做家务,辛苦了,谢谢你。还有我的宝贝女儿,谢谢你没有经常在我工作的时候来打扰我!
谨以此书献给热爱Linkerd和Service Mesh的朋友们!
杨章显