阿里资深架构师8年经验整理分享ServiceMesh实战文档
connygpt 2024-10-14 09:14 5 浏览
前言
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)”类的图书,而是希望将这个思想介绍给大家,看看服务网格是怎样一步一步完善自己的生态的。
希望本文能够帮助到大家的提升,并且能够利用所学到的知识,不断地提升自己的技术深度和广度,让自己变得更有价值,也希望能够得到大家的喜欢!
相关推荐
- 自学Python,写一个挨打的游戏代码来初识While循环
-
自学Python的第11天。旋转~跳跃~,我~闭着眼!学完循环,沐浴着while的光芒,闲来无事和同事一起扯皮,我说:“编程语言好神奇,一个小小的循环,竟然在生活中也可以找到原理和例子”,同事也...
- 常用的 Python 工具与资源,你知道几个?
-
最近几年你会发现,越来越多的人开始学习Python,工欲善其事必先利其器,今天纬软小编就跟大家分享一些常用的Python工具与资源,记得收藏哦!不然下次就找不到我了。1、PycharmPychar...
- 一张思维导图概括Python的基本语法, 一周的学习成果都在里面了
-
一周总结不知不觉已经自学Python一周的时间了,这一周,从认识Python到安装Python,再到基本语法和基本数据类型,对于小白的我来说无比艰辛的,充满坎坷。最主要的是每天学习时间有限。只...
- 三日速成python?打工人,小心钱包,别当韭菜
-
随着人工智能的热度越来越高,许多非计算机专业的同学们也都纷纷投入到学习编程的道路上来。而Python,作为一种相对比较容易上手的语言,也越来越受欢迎。网络上各类网课层出不穷,各式广告令人眼花缭乱。某些...
- Python自动化软件测试怎么学?路线和方法都在这里了
-
Python自动化测试是指使用Python编程语言和相关工具,对软件系统进行自动化测试的过程。学习Python自动化测试需要掌握以下技术:Python编程语言:学习Python自动化测试需要先掌握Py...
- Python从放弃到入门:公众号历史文章爬取为例谈快速学习技能
-
这篇文章不谈江流所专研的营销与运营,而聊一聊技能学习之路,聊一聊Python这门最简单的编程语言该如何学习,我完成的第一个Python项目,将任意公众号的所有历史文章导出成PDF电子书。或许我这个Py...
- 【黑客必会】python学习计划
-
阅读Python文档从Python官方网站上下载并阅读Python最新版本的文档(中文版),这是学习Python的最好方式。对于每个新概念和想法,请尝试运行一些代码片段,并检查生成的输出。这将帮助您更...
- 公布了!2025CDA考试安排
-
CDA数据分析师报考流程数据分析师是指在不同行业中专门从事行业数据搜集、整理、分析依据数据作出行业研究评估的专业人员CDA证书分为1-3级,中英文双证就业面广,含金量高!!?报考条件:满18...
- 一文搞懂全排列、组合、子集问题(经典回溯递归)
-
原创公众号:【bigsai】头条号:程序员bigsai前言Hello,大家好,我是bigsai,longtimenosee!在刷题和面试过程中,我们经常遇到一些排列组合类的问题,而全排列、组合...
- 「西法带你学算法」一次搞定前缀和
-
我花了几天时间,从力扣中精选了五道相同思想的题目,来帮助大家解套,如果觉得文章对你有用,记得点赞分享,让我看到你的认可,有动力继续做下去。467.环绕字符串中唯一的子字符串[1](中等)795.区...
- 平均数的5种方法,你用过几种方法?
-
平均数,看似很简单的东西,其实里面包含着很多学问。今天,分享5种经常会用到的平均数方法。1.算术平均法用到最多的莫过于算术平均法,考试平均分、平均工资等等,都是用到这个。=AVERAGE(B2:B11...
- 【干货收藏】如何最简单、通俗地理解决策树分类算法?
-
决策树(Decisiontree)是基于已知各种情况(特征取值)的基础上,通过构建树型决策结构来进行分析的一种方式,是常用的有监督的分类算法。决策树算法是机器学习中的一种经典算法,它通过一系列的规则...
- 面试必备:回溯算法详解
-
我们刷leetcode的时候,经常会遇到回溯算法类型题目。回溯算法是五大基本算法之一,一般大厂也喜欢问。今天跟大家一起来学习回溯算法的套路,文章如果有不正确的地方,欢迎大家指出哈,感谢感谢~什么是回溯...
- 「机器学习」决策树——ID3、C4.5、CART(非常详细)
-
决策树是一个非常常见并且优秀的机器学习算法,它易于理解、可解释性强,其可作为分类算法,也可用于回归模型。本文将分三篇介绍决策树,第一篇介绍基本树(包括ID3、C4.5、CART),第二篇介绍Ran...
- 大话AI算法: 决策树
-
所谓的决策树算法,通俗的说就是建立一个树形的结构,通过这个结构去一层一层的筛选判断问题是否好坏的算法。比如判断一个西瓜是否好瓜,有20条西瓜的样本提供给你,让你根据这20条(通过机器学习)建立起...
- 一周热门
- 最近发表
- 标签列表
-
- kubectlsetimage (56)
- mysqlinsertoverwrite (53)
- addcolumn (54)
- helmpackage (54)
- varchar最长多少 (61)
- 类型断言 (53)
- protoc安装 (56)
- jdk20安装教程 (60)
- rpm2cpio (52)
- 控制台打印 (63)
- 401unauthorized (51)
- vuexstore (68)
- druiddatasource (60)
- 企业微信开发文档 (51)
- rendertexture (51)
- speedphp (52)
- gitcommit-am (68)
- bashecho (64)
- str_to_date函数 (58)
- yum下载包及依赖到本地 (72)
- jstree中文api文档 (59)
- mvnw文件 (58)
- rancher安装 (63)
- nginx开机自启 (53)
- .netcore教程 (53)