前言

CNCF所提出的云原生概念在相当短的时间内得到了来自 Alibaba、Google、IBM、Pivotal等公司的支持与参与,背后的核心驱动力在于通过打造“事实标准”的软件去解决云厂商对客户的锁定问题。

云原生的本质,是解决应用的弹性(resiliency)、易用性(usability)和可移植性(portability)。当这“三性”得到妥善的解决后,客户所开发的(分布式)应用可以方便、高效地同时部署于多个云厂商所提供的云服务之上,这不仅解决客户所担心的技术锁定问题,还使得应用能很好地满足法规(指要求某些影响国计民生的应用必须同时部署于多个云厂商的云上)、全球多活等严苛的要求。

在解决“三性”的道路上,Service Mesh被视为新一代分布式应用架构的软件基础设施,并被明确地写入了云原生概念的定义中。Service Mesh可以理解为是微服务软件架构(microservices)的进一步延伸,用于解决大规模微服务应用所面临的多语言支持、服务全局最优治理、服务(全球)发现与路由、安全保障等挑战的关键技术手段。

开源软件Istio的出现,有望成为云原生中Service Mesh 的软件事实标准。Istio所提出的“数据平面”(Istio中的 Pilot-discovery、Mixer等组件)和“控制平面”(Envoy)通过很好的概念切分践行着软件行业解决复杂问题的终极范式——分而治之,这两个“平面”外加“运维平面”(Service Mesh中并没有定义)将能很好地助力解决云原生所致力于解决的“三性”问题。

Service Mesh的最高境界在于让分布式应用无须关注服务(全球)发现与路由、限流、降级、熔断、安全等通用问题,但达到这一目标并非一蹴而就,这就需要同仁们在各自的岗位上共同学习、运用和成就这一技术。

 

本文为网格服务技术的实战详解。

本文的出现能帮助读者更好地理解以Istio为代表的ServiceMesh技术背后的设计思路和了解阶段性的探索成果。

也希望能够得到大家的喜欢!

目录

 

 

 

 

 

 

主要内容

本文以初学者角度展示软负载在分布式架构中承担的角色,引入容器时代主角Kubernetes;

再从路由层面全面展开对Service Mesh与 Istio的系统介绍和深入剖析,包括其功能与特色;

最后通过源码剖析从实现细节上分析Istio 的几大关键设计。不论你是刚开始接触软负载的初学者,还是有一定经验的架构师,都可以在本文中找到想要的实用内容。

本文主要分为7章给大家进行介绍,希望大家能够仔细学习一下!

第1章分布式发展史,回顾计算机发展历史,能够发现分布式的发展跟计算机网络发展非常类似。它们都经过节点由少到多,再由多成网的过程。

TCP/IP协议诞生是解决计算机之间相连的问题,虽然是几十年前的产物,但到今天仍然是计算机网络传输中的基础,而且在大部分情况下都不需要感知到它的存在。服务治理也面临类似的问题:从最开始的单机到集群再到微服务时代,硬件成本越来越低,服务数量呈指数级增长,使得调用关系越来越复杂,这时工程师们就需要一种方式来有效管理这些服务及调用关系;

历史总是惊人的相似,只是现在我们面临的不再是如何有效地将计算机连接起来,而是如何将服务透明地连接起来而已。

为了让上层业务开发更加轻松,工程师们需要想出一个方案,将底层的细节更好地隐藏起来,无感知地变迁下层基础服务——这个方案就是Istio。经过了“集群化”“反向代理”及“旁路负载”前三代的进化,软负载迎来了第四代“服务网格”架构,其统一透明的架构为服务治理提供了全面的支撑,并具备高度可扩展性。

接下来的几章,笔者将使用目前使用面最广的Istio为大家详细讲解服务网格的实现原理,同时为大家剖析 Istio的架构设计。

 

第2章Service Mesh:以 Istio为例.本章从零开始动手体验了Istio的基本功能,并从架构及功能模块方面进行了粗略介绍。不可否认,Istio是现今服务网格领域最成熟的开源解决方案,其由 Google 的 CNCF 开源基

金主导,现今已经推出了1.0正式版本,相比其他服务网格实现——例如Conduit——已经算是最接近生产环境,即不久便可投入生产使用的方案。

Istio不仅提供传统软负载的路由及寻址功能,更将链路本身全部纳入它的管理体系中,这可以让业务完全透明地使用它。例如业务广泛需要的链路跟踪功能,以前都要业务方接入客户端——多则更改代码,少则附加一个代理。无论哪种都需要业务工程师关注及上线部署。

Istio 通过Sidecar 将入口与出口流量全部无感知劫持代理,配合Pilot统一分发的配置与策略,统一对各服务的流量进行把控,以此实现诸如“流量控制、认证鉴权、多版本服务”等功能。这些都是可以以插件的形式扩展的,Mixer的扩展接口为此做了充分的设计。目前已经支持如 Promethus、Hespter等三方扩展,如果有需要,还可以按 Mixer 的接口标准适配更多的三方扩展。

可以说Istio完全实现了服务网格的预期目标,还做到了平台无关性。虽然说Istio与Kubernetes都是同一个公司的产品,理论上来说当然对Kubernetes的支持是最好的,但是 Istio的设计者并不满足于此,1.0版本已经增加了对 Consul+虚拟机环境的支持,相信未来还会有更多,例如原生云平台——GCP(Google Cloud Platform)、AWS 等。

 

第3章理解Istio服务网格,在第2章中,笔者概括性地介绍了Istio的各个核心组件,并对它们的功能做了逐一介绍,例如“流量分配、故障注入、认证鉴权”等,均是 Istio最基础、最核心的功能,是构成一个数据服务网格所必要的。

本章将会针对上一章介绍的组件进行深入理解,以揭示Istio作为基础技术栈下沉后的绝对优势,从根本上感受其优秀的设计思想,让大家明白服务网格为何如此受大众欢迎。

此外,前面几章讲到Istio是一个高度可扩展的服务网格生态,众多优秀的开源工程,例如Grafana及 Prometheus,都可以直接适配到其生态中,只需对Istio定义的扩展接口进行简单的适配即可,这使得其生命力得到了进一步提升。因此,本章还会向大家讲解一下Istio的功能扩展思想。

 

第4章lstio周边生态一览,Istio的伟大之处,不在于设计本身,而在于它是一个兼容并包的生态。它为整个行业提供了一种全新的开发及运维方式。除了第3章介绍的关于路由、安全及配置方面的需求,分布式服务在链路层面上还有很多待解决的点,如链路跟踪、分布式日志、监控报警、压测演练、故障注入等。若让 Istio官方来实现所有的功能,不仅耗时,还会让整个系统变得非常臃肿。

从最早的动态链接库'到现今的Docker分层镜像,软件效率的核心就是复用。只有站在巨人的肩膀上才能走得更快更远,这是一个基本原则;但是至今仍然有人不以为然,总认为自己做得更好,不断重新发明轮子,令人费解。

第3章讲到 Istio拥有强大的扩展能力,通过 Mixer可以对接众多三方扩展;同时使用扩展也非常容易,这都要归功于Mixer中心化控制的设计思想,即每个Sidecar 的流量都需要由Mixer进行校验,检测通过以后才能进行下一步。在这种设计下,扩展仅需要对接好Mixer 提供的接口,业务系统不用做任何变更就能使用。

本章会围绕企业实际的场景,为读者介绍Istio生态中最常用的几个组件。这些组件包括链路跟踪、日志、监控及流量调度,已经覆盖了中小企业的典型需求。在读完本章后,你会发现,有了Istio,很多运维与基础环境的工作都变得非常简单了,开发人员可以花费更多的精力在业务代码本身上,而不是在环境的维护上。

 

第5章lstio 部分源码剖析,在前四章,笔者比较全面地介绍了Istio,大家已经掌握了服务网格(Service Mesh)的工作原理与其在分布式架构特别是微服务架构下的优势;不过对于Istio的代码实现,还并未涉及。从本章开始,笔者将带领大家深入理解Istio在代码层面上的逻辑与结构,以展示其部分设计思想。

前面讲过,Istio是一个生态,在设计之初便是从平台化的思维入手的。它的设计理念在于,将微服务架构中众多零散的服务节点,通过Sidecar 这种非侵入方式给串接起来,形成一张大网,谓之服务网格。由于Sidecar 的存在,针对链路的扩展组件可以通过插件的形式介入其中,所以说服务网络本身在架构上的优势就在于“非侵入流量接管”,向业务开发者完全屏蔽了与链路相关的复杂逻辑。

 

第6章服务网格企业实践.本章是本文介绍服务网格的最后一章,本是想向大家介绍 Istio在企业中的实践,可笔者与各大公司的工程师们交流后发现,他们均没有使用原生的Istio,原因就是RPC 这个历史问题太难迁移了,它不是一个系统也不是一个方案,而是联系到所有业务系统的一个纽带。企业不可能一次性将使用中的RPC 换成Istio所倡导的HTTP或者 gRPC,因为原有系统中有各式各样的中间件的适配问题,例如配置中心不可能一次性地将其迁移到 Istio的 ConfigStore中。

企业需要一个贴近国内生产环境的服务网格产品,因此,在本章中,笔者选择了国内蚂蚁金服开源的 SOFAMesh,向读者介绍一个企业在服务网格浪潮中的迁升之路。

 

这份【Service Mesh实战:用Istio软负载实现服务网格】共有284页,需要完整版的朋友,可以转发此文关注小编,扫码来获取!!!

专家强烈推荐学习

 

希望大家通过此书能够对软负载及服务网格技术有全面且较为深入的了解,并能灵活运用在日常的架构工作上;而对于一些从事一线开发工作的朋友,相信也从Istio架构中学到了不少优秀的模式与技巧。

相信读者已经体会到了,本文并不是“操作手册(Cookbook)”类的图书,而是希望将这个思想介绍给大家,看看服务网格是怎样一步一步完善自己的生态的。

希望本文能够帮助到大家的提升,并且能够利用所学到的知识,不断地提升自己的技术深度和广度,让自己变得更有价值,也希望能够得到大家的喜欢!