上一篇:《ServiceMesh究竟解决什么问题》《什么是Istio,ServiceMesh***落地》Istio是ServiceMesh的产品化:(1)帮助建立微服务之间的联系,帮助研发团队更好的管理和监控微服务,让系统架构更安全.(2)有助于微服务分层解耦。解耦后的代理层可以更专注于提供基础设施能力,例如:服务发现(discovery)负载均衡(loadbalancing)故障恢复(failurerecovery)服务指标(metrics))服务监控(monitoring),A/B测试(A/B测试)、金丝雀发布、速率限制、访问控制、端到端身份验证和其他功能。(3)使业务工程团队和基础架构团队都能够更高效地工作,专注于自己的工作,更好地相互赋能。今天就来聊聊Istio的核心架构设计。关于Istio的架构设计,官网用了这样一句话:从逻辑上讲,Istio分为两个词:数据平面(dataplane)和控制平面(controlplane),它们是Istio架构的核心,但它们是最误导的。地方。数据平面和控制平面并不是ServiceMesh和Istio第一次提出的,它们是计算机网络、数据包路由和转发中非常成熟的概念:数据平面(dataplane):一般用于快速转发控制平面(controlplane):为快速转发提供必要的信息画外音:以上两张图为路由器架构。它的设计原则是:在一个路由设备中,转发是最重要的工作,它具有最高的优先级,数据平面设计的核心是高效转发,如何在最短的时间内处理最多的包,在硬件实现中往往采用高效的内存管理、队列管理、超时管理等技术。而控制平面(controlplane)则不然。它需要实现路由协议、设备管理、IGMP和ARP协议。它更倾向于控制和应用,画外音往往是通过软件实现的:IGMP(InternetGroupManagementProtocol),一种组播协议;ARP(AddressResolutionProtocol),大家比较熟悉,根据IP地址获取MAC地址;Istio的核心架构和路由器非常相似:service(上面的小红框),通过本地通信和proxy交互数据平面,由一系列proxy(中间层的两个小红框)组成,核心职责是:高效转发;从混音器接收并执行策略;controlplane(底部的大红框),核心是控制和应用,核心职责是:管理和配置sidecaragents;通过Mixer执行策略并从sidecaragent收集数据;画外音:sidecar代理,原文使用envoy,后面使用envoy表示代理;mixer,不知道怎么翻译,有的文章叫“mixer”,下面的文字直接叫mixer;pilot,galley,citadel,不敢翻译成pilot,kitchen,fortress,后面的文字直接是英文;如架构图所示,两层架构中有五个核心组件。数据平面有一个核心组件:Envoy(代理)Envoy的核心职责是高效转发。更具体地说,它具有以下能力:服务发现、负载均衡、安全传输、多协议支持,例如HTTP/2、gRPC断路器(Circuitbreakers)健康检查百分比分流路由故障注入(Faultinjection)中的大部分系统测量能力在RPC框架中都有,还是比较容易理解的,这里重点说说断路器和故障注入。断路器设计是软件架构设计中服务自我保护或降级的一种设计思想。例如:当系统检测到某个接口出现大量超时时,熔断策略可以终止对该接口的调用(熔断开启)。一段时间后,再次尝试呼叫。如果接口不再超时,则慢慢恢复调用(断路器闭合)。故障注入设计是在软件架构设计中有意引入故障以扩大测试覆盖率和保证系统健壮性的一种方法。它主要用于测试。国内大部分互联网公司在架构设计上都没有考虑故障注入。常用于操作系统内核和路由器的开发调试。它可以用来模拟一些非常棘手的异常,比如内存分配失败、磁盘IO错误等。,以确保测试覆盖率。控制平面有四个核心组件:MixerMixer的一些核心能力是:跨平台,作为其他组件的适配器,实现Istio的跨平台能力;与Envoy通信,与Envoy实时通信,收集各种数据Mixer设计的核心在于“插件化”,使得Istio能够适应各种复杂的主机环境和后端基础设施。PilotPilot作为一个非常重要的控制面组件,其核心能力是:为Envoy提供服务发现能力;为Envoy提供A/B测试、灰度发布等多种智能路由管理能力;为Envoy提供各种弹性管理能力,如超时、重试、熔断策略等。Pilot的设计核心在于“标准化”,将各种流控指令转换成Envoy可以识别的配置,并在运行时将这些指令传播给所有的Envoy。Pilot将这些能力抽象成通用配置的好处是所有符合这个标准的Envoy都可以连接到Pilot。潜台词是任何第三方都可以实现自己的代理,只要符合相关API标准,就可以与Pilot集成。CitadelCitadel组件,它提供最终用户身份验证和服务到服务的访问控制。简而言之,这是一个与安全相关的组件。GalleyGally组件是配置获取、验证、处理和分发的组件。它的设计核心是“解耦”,将“从底层平台(如:K8S)获取用户配置”与Istio解耦。Lace:为什么80%的中国用户对Istio的两层架构有错误的理解?很多朋友问我通过什么渠道学习***技术知识。我的答案一直是英文官网。画外音:本文所有资料均来自Istio1.1英文官网。我在百度上搜索了Istio,80%的资料,将二层架构翻译为:Dataplanecontrolpanel画外音:可以在百度上搜索“istiocontrolpanel”一开始我非常困惑,因为“dataplane”和”“Controlplane”是一个很成熟的翻译,Router就是用这种两层架构,ServiceMesh也是用同样的架构设计来解耦,应该不需要创造性的翻译。后来才明白:controlplane(控制平面)controlpanel(控制面板)半英文程序员,二手技术文档,真害人,唉。总结一下,Istio采用二层架构,五模块解耦微服务ServiceMesh:(1)数据平面,主要负责用于envoy模块的高效转发:proxy;(2)controlplane,主要负责控制和应用mixer模块:支持跨平台,标准化API的适配器;pilot模块:control和configurem特使的大部分策略;citadel模块:安全相关;galley模块:与底层平台(如:K8S)配置解耦;实现与控制分离,经典架构设计方法,GOT?想法比结论更重要。【本文为专栏作者《58神剑》原创稿件,转载请联系原作者】点此阅读更多该作者好文
