Istio是下一代的微服务,也是云原生的核心基石,下面我就全面来详解Istio架构原理@mikechen
Istio
Istio是一个开源的服务网格(Service Mesh)解决方案,用于管理微服务架构中的服务通信、安全性、流量控制、和监控。
Istio主要是由: Google等公司共同开发的,是一个功能丰富、可扩展的服务网格产品,是下一代微服务的典型代表。
Istio可以控制和管理微服务之间的流量,并提供:灵活的路由规则、负载均衡、故障恢复等功能。
并且,Istio是一个与Kubernetes紧密结合的服务网格解决方案,它在云原生场景中发挥着重要的作用。
Istio架构
Istio的架构,主要包括:数据平面(Data Plane)、控制平面(Control Plane)..等组件。
如下图所示:
1、数据平面(Data Plane)
Istio的数据平面主要由:Envoy代理构成,Envoy是一个高性能的边缘和服务代理,负责实际处理和转发服务之间的流量。
在 Istio 中,Envoy 通常被用作 Sidecar 的实现,作为每个 Pod 的 Sidecar 部署。
Istio 中的服务实例就好比摩托车,而每个服务实例附加的 Sidecar ,就好比连接到摩托车的边车。
如下图所示:
边车:通常指的是附加在摩托车侧面的附加座位、或车篮,用于运输额外的乘客、或货物。
类似地,在 Istio 中,Sidecar 也是附加在主服务实例旁边的辅助容器,用于处理服务实例的流量、和执行各种功能。
比如,包含:执行流量管理、安全性、监控等…功能,类似于边车跟随摩托车,处理额外的乘客或货物。
1)流量管理
Sidecar 负责:处理 Pod 内服务之间的所有流量,拦截进出的请求,并根据 Istio 中定义的流量规则进行路由、负载均衡等操作。
2)安全性
Sidecar 提供了对 Pod 内服务通信的加密、认证和授权,它可以对请求进行认证,并在需要时执行流量加密,确保通信的安全性。
3)监控
Sidecar 生成详细的访问日志和指标数据,记录 Pod 内服务之间的流量信息,这些日志和指标可以用于监控和分析服务的运行状况,以及诊断和调试问题。
2、控制平面(Control Plane)
Istio :通过控制平面(Control Plane)、和代理(Proxy)之间的通信,来实现各种服务治理功能。
控制平面,负责管理整个服务网格的配置和策略,包括:流量管理、安全性、监控等方面的配置。
它由多个组件组成,如: Pilot、Citadel、Galley 和 Mixer。
- Pilot:Pilot负责服务发现、流量管理和负载均衡,它从服务注册表中获取服务的位置信息,并生成Envoy的配置,以实现请求的路由和负载均衡。
- Mixer:Mixer负责策略执行和监控收集,它可以执行访问控制、流量控制等策略,并收集和记录服务的指标和日志数据。
- Citadel:Citadel负责安全认证和加密,它提供了服务之间的强制认证、流量加密等安全功能,保护服务之间的通信免受攻击和数据泄露的威胁。
总之,通过这些组件共同构成了 Istio 的控制平面,通过协同工作来配置、和管理数据平面中的 Envoy 代理,实现了对服务网格的集中化管理和控制。
作者简介
陈睿|mikechen,10年+大厂架构经验,BAT资深面试官,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注作者「mikechen」公众号,获取更多技术干货!
后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》,后台回复【面试】即可获取《史上最全阿里Java面试题总结》