要聊 ServiceMesh,就不得不提 Istio,它是 ServiceMesh 的最流行实践,今天聊聊 Istio。
上一章《SM,它解决什么问题?》聊了ServiceMesh的缘起。要聊ServiceMesh,就不得不提Istio,它是ServiceMesh的最流行实践,今天聊聊Istio。

什么是Istio?
Istio是ServiceMesh的落地化产品,它:
- 帮助微服务之间建立连接,帮助研发团队更好的管理与监控微服务,并使得系统架构更加安全;
画外音:Istio helps you to connect, secure, control, and observe microservices.
- 帮助微服务分层解耦,解耦后的proxy层能够更加专注于提供基础架构能力,例如:服务发现(discovery), 负载均衡(load balancing), 故障恢复(failure recovery), 服务度量(metrics), 服务监控(monitoring), A/B测试(A/B testing), 灰度发布(canary rollouts), 限流限速(rate limiting), 访问控制(access control), 身份认证(end-to-end authentication)...
- 使得业务工程团队与基础架构团队都更加高效的工作,各自专注于自己的工作,更好的彼此赋能;
画外音:说的还是解耦。
为什么要用Istio?
Istio官网是这么说的:
(1) 可以通过,在现有服务器新增部署边车代理(sidecar proxy),应用程序不用改代码,或者只需要改很少的代码,就能实现上述N项基础功能;
画外音:你信了么?
(2) 可以通过,控制后台,简单改改配置,点点按钮,就能管理和查看上述N项基础功能;
(3) 以下特性,Istio在这个环节里进行了附加说明:
- 支持多协议,HTTP, gRPC, WebSocket, TCP
- 通过路由、重试、故障转移对流量进行细粒度流控
- 通过可插拔策略层以及可配置API,能够支持流量访问控制、限速、配额管理
- 自动度量、日志收集、调用跟踪
- 服务到服务的身份认证
Istio的核心特性是什么?
Istio强调了它提供的五项关键特性:
(1) 流控(traffic management)
断路器(circuit breakers)、超时、重试、高可用、多路由规则、AB测试、灰度发布、按照百分比分配流量等。
(2) 安全(security)
加密、身份认证、服务到服务的权限控制、K8S里容器到容器的权限控制等。
(3) 可观察(observability)
追踪、监控、数据收集,通过控制后台全面了解上行下行流量,服务链路情况,服务运行情况,系统性能情况,国内微服务架构体系,这一块做得不够好。
(4) 平台无关系(platform support)
K8s,物理机,自己的虚机都没问题。
(5) 集成与定制(integration and customization)
可定制化扩展功能。
Istio的特性,对于国外很多通过RESTful提供内网服务的公司,很有吸引力,但相对于国内微服务架构,未必达到了很好的拉拢效果:
- 国内基本都是TCP的RPC框架,多协议支持未必是必须的;
- RPC框架里,路由、重试、故障转移、负载均衡、高可用都是最基础的;
- 流控、限速、配额管理,是服务治理的内容,在微服务架构初期是锦上添花;
- 自动度量,系统入口出口数据收集,调用跟踪,可观察和可操控的后台确实是最吸引人的;
- 服务到服务的身份认证,微服务基本是内网访问,在架构初期也只是锦上添花;
另外,为什么Istio代理会叫sidecar proxy?

看了上图就容易懂了,biz和proxy相生相伴,就像摩托车(motor)与旁边的车厢(sidecar)。后文,sidecar和proxy就指微服务进程解耦成两个进程之后,提供基础能力的那个代理进程。
Istio这么牛逼,它的核心架构如何呢?
官网用了这样一句话:

逻辑上,Istio分为:
- 数据平面(data plane);
- 控制平面(control plane);
这两个词,是Istio架构核心。
数据平面和控制平面,不是ServiceMesh和Istio第一次提出,它是计算机网络,报文路由转发里很成熟的概念:

- 数据平面(data plane):一般用来做快速转发;
- 控制平面(control plane):为快速转发提供必要的信息;

画外音:上两图为路由器架构。
它的设计原则是:
- 在一个路由设备里,转发是最重要的工作,它具备最高的优先级,数据平面(data plane)的设计核心就是高效转发,如何在最短的时间里处理最多的包,往往使用高效内存管理、队列管理、超时管理等技术实现在硬件里;
- 控制平面(control plane)则不然,它要实现路由协议,设备管理,IGMP,ARP协议的,它更偏向于控制与应用,往往由软件实现;
画外音:
- IGMP(Internet GroupManagement Protocol),一个组播协议;
- ARP(Address ResolutionProtocol),这个大家比较熟悉,根据IP地址获取MAC地址;
Istio的架构核心与路由器非常类似:

(1) 服务(最上面的小红框),通过本地通讯与proxy交互;
(2) 数据平面,由一系列proxy组成(中间一层的两个小红框),核心职责是:
- 高效转发
- 接收和实施来自mixer的策略
(3) 控制平面(底下的大红框),核心是控制与应用,核心职责是:
- 管理和配置边车代理
- 通过mixer实施策略与收集来自边车代理的数据
如架构图所示,该两层架构中,有五个核心组件。
数据平面,有几个核心组件?
(1) Envoy (proxy)
Envoy的核心职责是高效转发,更具体的,它具备这样一些能力:
- 服务发现
- 负载均衡
- 安全传输
- 多协议支持,例如HTTP/2,gRPC
- 断路器(Circuit breakers)
- 健康检查
- 百分比分流路由
- 故障注入(Fault injection)
- 系统度量
大部分能力是RPC框架都具备,或者比较好理解的,这里面重点介绍下断路器和故障注入。
(2) 断路器设计
它是软件架构设计中,一个服务自我保护,或者说降级的设计思路。
举个例子:当系统检测出某个接口有大量超时时,断路器策略可以终止对这个接口的调用(断路器打开),经过一段时间后,再次尝试调用,如果接口不再超时,则慢慢恢复调用(断路器关闭)。
(3) 故障注入设计
它是软件架构设计中,一种故意引入故障,以扩大测试覆盖范围,保障系统健壮性的方法,主要用于测试。
国内大部分互联网公司,架构设计中不太会考虑故障注入,在操作系统内核开发与调试,路由器开发与调试中经常使用,可以用来模拟内存分配失败、磁盘IO错误等一些非常难出现的异常,以确保测试覆盖度。
控制平面,有几个核心组件?
(1) Mixer
Mixer的一些核心能力是:
- 跨平台,作为其他组件的adapter,实现Istio跨平台的能力;
- 和Envoy通讯,实施各种策略;
- 和Envoy通讯,收集各种数据;
Mixer的设计核心在于“插件化”,这种模型使得Istio能够适配各种复杂的主机环境,以及后端基础设施。
(2) Pilot
Pilot作为非常重要的控制平面组件,其核心能力是:
- 为Envoy提供服务发现能力;
- 为Envoy提供各种智能路由管理能力,例如A/B测试,灰度发布;
- 为Envoy提供各种弹性管理能力,例如超时,重试,断路策略;
Pilot的设计核心在于“标准化”,它会将各种流控的控制命令转化为Envoy能够识别的配置,并在运行时,将这些指令扩散到所有的Envoy。Pilot将这些能力抽象成通用配置的好处是,所有符合这种标准的Envoy都能够接入到Pilot来。
潜台词是,任何第三方可以实现自己的proxy,只要符合相关的API标准,都可以和Pilot集成。
(3) Citadel
Citadel组件,它提供终端用户身份认证,以及服务到服务的访问控制。总之,这是一个和安全相关的组件。
(4) Galley
Galley组件,它是一个配置获取、校验、处理、分发的组件,它的设计核心在于“解耦”,它将“从底层平台(例如:K8S)获取用户配置”与Istio解耦开来。
总结

Istio采用二层架构,五大模块,进行微服务ServiceMesh解耦:
(1) 数据平面,主要负责高效转发:envoy:即proxy
(2) 控制平面,主要负责控制与应用:
- mixer:支持跨平台,标准化API的adapter
- pilot:控制与配置envoy的大部分策略
- citadel:安全相关
- galley:与底层平台(例如:K8S)配置解耦
实施与控制分离,经典的架构设计方法,你学会了吗?
知其然,知其所以然。
思路比结论更重要。
AI大模型学习福利
作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
一、全套AGI大模型学习路线
AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获取
二、640套AI大模型报告合集
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获
三、AI大模型经典PDF籍
随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获
四、AI大模型商业化落地方案

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获
作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量
950

被折叠的 条评论
为什么被折叠?



