Istio 架构

Istio 服务网格从逻辑上分为数据平面和控制平面。

  • 数据平面 由一组智能代理(Envoy)组成,被部署为 sidecar。这些代理负责协调和控制微服务之间的所有网络通信。他们还收集和报告所有网格流量的遥测数据。
  • 控制平面 管理并配置代理来进行流量路由。

Istio 核心组件

下图展示了组成每个平面的不同组件:

Istio 中的流量分为数据平面流量和控制平面流量。

  • 数据平面流量是指工作负载的业务逻辑发送和接收的消息
  • 控制平面流量是指在 Istio 组件之间发送的配置和控制消息用来编排网格的行为
  • Istio 中的流量管理特指数据平面流量

Envoy

Istio 使用 Envoy 代理的扩展版本。Envoy 是用 C++ 开发的高性能代理,用于协调服务网格中所有服务的入站和出站流量。Envoy 代理是唯一与数据平面流量交互的 Istio 组件。

Envoy 代理被部署为服务的 sidecar,在逻辑上为服务增加了 Envoy 的许多内置特性,例如:

  • 动态服务发现
  • 负载均衡
  • TLS 终端
  • HTTP/2 与 gRPC 代理
  • 熔断器
  • 健康检查
  • 基于百分比流量分割的分阶段发布
  • 故障注入
  • 丰富的指标

这种 sidecar 部署允许 Istio 提取大量关于流量行为的信号作为属性。Istio 可以使用这些属性来实施策略决策,并将其发送到监视系统以提供有关整个网格行为的信息。

由 Envoy 代理启用的一些 Istio 的功能和任务包括:

  • 流量控制功能:通过丰富的 HTTP、gRPC、WebSocket 和 TCP 流量路由规则来执行细粒度的流量控制。
  • 网络弹性特性:重试设置、故障转移、熔断器和故障注入。
  • 安全性和身份验证特性:执行安全性策略以及通过配置 API 定义的访问控制和速率限制。
  • 基于 WebAssembly 的可插拔扩展模型,允许通过自定义策略实施和生成网格流量的遥测。

Pilot

Pilot 为 Envoy sidecar 提供服务发现、用于智能路由的流量管理功能(例如,A/B 测试、金丝雀发布等)以及弹性功能(超时、重试、熔断器等)。

Pilot 将控制流量行为的高级路由规则转换为特定于环境的配置,并在运行时将它们传播到 sidecar。Pilot 将特定于平台的服务发现机制抽象出来,并将它们合成为任何符合 Envoy API 的 sidecar 都可以使用的标准格式。

下图展示了平台适配器和 Envoy 代理如何交互。

  1. 平台启动一个服务的新实例,该实例通知其平台适配器。
  2. 平台适配器使用 Pilot 抽象模型注册实例。
  3. Pilot 将流量规则和配置派发给 Envoy 代理,来传达此次更改。

Citadel

Citadel通过内置的身份和证书管理,可以支持强大的服务到服务以及最终用户的身份验证。您可以使用 Citadel 来升级服务网格中的未加密流量。使用 Citadel operator 可以执行基于服务身份的策略。

Galley

Galley 是 Istio 的配置验证、提取、处理和分发组件。它负责将其余的 Istio 组件与从底层平台(例如 Kubernetes)获取用户配置的细节隔离开来。

Istio 部署模型

您可以将单个网格配置为包括多集群。多集群部署可为您提供更大程度的隔离和可用性,但会增加复杂性。 如果您的系统具有高可用性要求,则可能需要集群跨多个可用区和地域。 对于应用变更或新的版本,您可以在一个集群中配置金丝雀发布,这有助于把对用户的影响降到最低。 此外,如果某个集群有问题,您可以暂时将流量路由到附近的集群,直到解决该问题为止。

Istio 1.6 性能总结

Istio 负载测试 网格包含了 1000 个服务和 2000 个 sidecar,全网格范围内,QPS 为 70,000。 在使用 Istio 1.6 运行测试后,我们得到了如下结果:

  • 通过代理的 QPS 有 1000 时,Envoy 使用了 0.5 vCPU50 MB 内存
  • 网格总的 QPS 为 1000 时,istio-telemetry 服务使用了 0.6 vCPU
  • Pilot 使用了 1 vCPU1.5 GB 内存。
  • 90% 的情况 Envoy 代理只增加了 2.8 ms 的延迟。

常用端口和协议

端口 协议 使用者 描述
8060 HTTP Citadel GRPC 服务器
8080 HTTP Citadel agent SDS service 监控
9090 HTTP Prometheus Prometheus
9091 HTTP Mixer 策略/遥测
9876 HTTP Citadel, Citadel agent ControlZ 用户界面
9901 GRPC Galley 网格配置协议
15000 TCP Envoy Envoy 管理端口 (commands/diagnostics)
15001 TCP Envoy Envoy 传出
15006 TCP Envoy Envoy 传入
15004 HTTP Mixer, Pilot 策略/遥测 - mTLS
15010 HTTP Pilot Pilot service - XDS pilot - 发现
15011 TCP Pilot Pilot service - mTLS - Proxy - 发现
15014 HTTP Citadel, Citadel agent, Galley, Mixer, Pilot, Sidecar Injector 控制平面监控
15020 HTTP Ingress Gateway Pilot 健康检查
15029 HTTP Kiali Kiali 用户界面
15030 HTTP Prometheus Prometheus 用户界面
15031 HTTP Grafana Grafana 用户界面
15032 HTTP Tracing Tracing 用户界面
15443 TLS Ingress and Egress Gateways SNI
15090 HTTP Mixer Proxy
42422 TCP Mixer 遥测 - Prometheus

参考文献

https://preliminary.istio.io/docs/ops/deployment/architecture/

https://preliminary.istio.io/zh/docs/ops/deployment/architecture/

https://preliminary.istio.io/zh/docs/ops/deployment/deployment-models/

https://preliminary.istio.io/docs/ops/deployment/performance-and-scalability/

https://preliminary.istio.io/docs/ops/deployment/requirements/

Istio 1.6架构及性能的更多相关文章

  1. paip.cache 缓存架构以及性能提升总结

    paip.cache 缓存架构以及性能提升总结 1         缓存架构以及性能(贯穿读出式(LookThrough) 旁路读出式(LookAside) 写穿式(WriteThrough) 回写式 ...

  2. 【转帖】威盛x86 AI处理器架构、性能公布:媲美Intel 32核心

    威盛x86 AI处理器架构.性能公布:媲美Intel 32核心 https://www.cnbeta.com/articles/tech/920559.htm 除了Intel.AMD,宝岛台湾的威盛也 ...

  3. MGR架构~ 整体性能架构的调优

    一 简介:MGR集群架构的调优二 过程:本文将从各个角度来具体阐述下三 硬件    1 硬件选择相同配置的服务器,磁盘,内存,cpu性能越高越好四 网络    1 0丢包和最好万兆网卡五 MGR本身  ...

  4. 架构和性能优化的核心原则(康神sf讲座学习笔记)

    其实架构性能优化的核心就是分,分为分离.分层.分布. 分离动静分离静态资源.动态页面的分离 比如,一个页面有很多静态图片,静态的图片.动态数据.静态CSS.js,图片一般用cdn,但静态资源在使用域名 ...

  5. Istio微服务架构初试

    感谢 http://blog.csdn.net/qq_34463875/article/details/77866072 看了一些文档,有些半懂不懂,所以还是需要helloworld一下.因为isti ...

  6. mysql性能调优与架构设计(一)商业需求与系统架构对性能的影响

    这里我们就拿一个看上去很简单的功能来分析一下. 需求:一个论坛帖子总量的统计附加要求:实时更新 在很多人看来,这个功能非常容易实现,不就是执行一条SELECT COUNT(*)的Query 就可以得到 ...

  7. Nvidia 的新显卡架构 Maxwell 性能相比开普勒提升了多少?

    作者:喵西和熊链接:https://www.zhihu.com/question/22630075/answer/29041618来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...

  8. iOS应用千万级架构:性能优化与卡顿监控

    CPU和GPU 在屏幕成像的过程中,CPU和GPU起着至关重要的作用 CPU(Central Processing Unit,中央处理器) 对象的创建和销毁.对象属性的调整.布局计算.文本的计算和排版 ...

  9. 高性能网站性能优化与系统架构(ZT)

    转载请保留出处:俊麟 Michael’s blog (http://space.itpub.net/7311285/viewspace-97) 我在CERNET做过拨号接入平台的搭建,而后在Yahoo ...

随机推荐

  1. 数制转换itoa atoi int转字符串 字符串转int string转int int转string

    在苦于昨晚最后一个数制转换题,他的转换结果必须是整形数,纳尼?转换完放数组里又要变成整形数.这是什么操作,而且如果是16进制,用字母A,B-表示,在进行运算时都难以计算. 突发奇想,当十进制成立的时候 ...

  2. codeforce 270C Magical Boxes

    C. Magical Boxes Emuskald is a well-known illusionist. One of his trademark tricks involves a set of ...

  3. codeforce 270B Multithreading

    B. Multithreading Emuskald is addicted to Codeforces, and keeps refreshing the main page not to miss ...

  4. P5522 [yLOI2019] 棠梨煎雪

    updata on 2020.3.19 今天把博客从洛谷往博客园搬,图炸了 其实早就发现了,懒得管 那图其实就是一个用dev自带的调试功能调试时,RE了的报错 当时觉得很奇怪看不出是啥,现在再看已经觉 ...

  5. python(递归函数)

    1.描述: 递归函数:在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. 2.递归函数特性: 必须有一个明确的结束条件: 每次进入更深一层递归时,问题规模相比上次递归 ...

  6. cookie、session 和 token 区别

    1.什么是 cookie cookie 是保存在本地终端的数据.cookie 由服务器生成,发送给浏览器,浏览器把 cookie 以 kv 形式保存到某个目录下的文本文件内,下一次请求同一网站时会把该 ...

  7. 系统基础优化 vim

    系统基础优化 vim 1系统基础优化 (CPU-lscpu 内存-free 磁盘-df 负载-w/uptime) 1.1 系统基础优化 准备工作:如何查看系统的信息 (1)cat /etc/redha ...

  8. kafka学习 之 Quickstart

    第一步:安装启动kafka 官网链接:https://www.apache.org/dyn/closer.cgi?path=/kafka/2.3.0/kafka_2.11-2.3.0.tgz 进入指定 ...

  9. vue-双向响应数据底层原理分析

    总所周知,vue的一个大特色就是实现了双向数据响应,数据改变,视图中引用该数据的部分也会自动更新 一.双向数据绑定基本思路 “数据改变,视图中引用该数据的部分也会自动更新“,从这句话,我们可以分析出以 ...

  10. (一只小白)对private,final关键字的一些认知

    1.private: private是私有的意思,在Java中可以用来修饰类里面的成员变量或者成员方法(注:不能修饰一个类,因为一个类如果外部无法访问的话,面向对象的编程思想将毫无意义),顾名思义,被 ...