作者:tbc5052661 | 来源:互联网 | 2023-08-21 12:04
官方对Istio的介绍浓缩成了一句话:\x0aAnopenplatformtoconnect,secure,controlandobserveservices.\x0a翻译过来,就
官方对 Istio 的介绍浓缩成了一句话:
An open platform to connect, secure, control and observe services.
翻译过来,就是”连接、安全加固、控制和观察服务的开放平台“。
开放平台就是指它本身是开源的,服务对应的是微服务,也可以粗略地理解为单个应用。
中间的四个动词就是 Istio 的主要功能,这里再阐释一下:
连接(Connect):智能控制服务之间的调用流量,能够实现灰度升级、AB 测试和红黑部署等功能。
安全加固(Secure):自动为服务之间的调用提供认证、授权和加密。
控制(Control):用户定义的 policy,保证资源在消费者中公平分配。
观察(Observe):查看服务运行期间的各种数据,比如日志、监控和 tracing,了解服务的运行情况。
NOTE:其实 Istio 的源头是微服务,但这又是一个比较大的话题,目前可以参考网络上各种文章。如果有机会,我们再来聊聊微服务。
Istio 官方给出的架构图:
可以看到,Istio 就是我们上述提到的 Service Mesh 架构的一种实现,服务之间的通信(比如这里的 Service A 访问 Service B)会通过代理(默认是 Envoy)来进行。而且中间的网络协议支持 HTTP/1.1,HTTP/2,gRPC 或者 TCP,可以说覆盖了主流的通信协议。
控制面板做了进一步的细分,分成了 Pilot、Mixer 和 Citadel,它们的各自功能如下:
Pilot:为 Envoy 提供了服务发现,流量管理和智能路由(AB 测试、金丝雀发布等),以及错误处理(超时、重试、熔断)功能。 用户通过 Pilot 的 API 管理网络相关的资源对象,Pilot 会根据用户的配置和服务的信息把网络流量管理变成 Envoy 能识别的格式分发到各个 Sidecar 代理中。
Mixer:为整个集群执行访问控制(哪些用户可以访问哪些服务)和 Policy 管理(Rate Limit,Quota 等),并且收集代理观察到的服务之间的流量统计数据。
Citadel:为服务之间提供认证和证书管理,可以让服务自动升级成 TLS 协议。
代理会和控制中心通信,一方面可以获取需要的服务之间的信息,另一方面也可以汇报服务调用的 Metrics 数据。
性能评估,官方给出了对最新版本V1.1.4的性能测试结果。在由1000个服务和2000个Sidecar组成,每秒产生70000个网格范围内的请求的网格中,得到以下结果:
Envoy在每秒处理 1000 请求的情况下,使用 0.6 个 vCPU 以及 50 MB 的内存。
istio-telemetry在每秒1000个网格范围内的请求的情况下,消耗了0.6个vCPU。
Pilot使用了 1 个 vCPU 以及 1.5 GB 的内存。
Envoy在第 90 个百分位上增加了 8 毫秒的延迟。