ServiceMesh最火项目Istio架构设计哲学

简介: ServiceMesh最火项目Istio架构设计哲学

架构设计

1.0架构

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

数据平面

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

Envoy

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


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

动态服务发现

负载均衡

TLS 终端

HTTP/2 与 gRPC 代理

熔断器

健康检查

基于百分比流量分割的分阶段发布

故障注入

丰富的指标


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


sidecar 代理模型还允许您向现有的部署添加 Istio 功能,而不需要重新设计架构或重写代码。您可以在设计目标中读到更多关于为什么我们选择这种方法的信息。


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

流量控制功能:通过丰富的 HTTP、gRPC、WebSocket 和 TCP 流量路由规则来执行细粒度的流量控制。


网络弹性特性:重试设置、故障转移、熔断器和故障注入。


安全性和身份验证特性:执行安全性策略以及通过配置 API 定义的访问控制和速率限制。


基于 WebAssembly 的可插拔扩展模型,允许通过自定义策略实施和生成网格流量的遥测。

控制平面

管理并配置代理来进行流量路由。

  • Pilot,负责将配置分发给 sidecar 组件
  • Citadel,负责安全
  • Mixer,负责遥测和策略,一种插件模型。但存在问题:

需要和数据平面进行两次通信,但其又是单独部署的进程外的组件,所以每次请求都要和进程外进行通信,降低整个请求的性能。插件模型虽然带来很好的扩展性,但也产生耦合:当需要添加新插件或修改已有插件,都要重新部署 mixer。所以下一版本就需要解耦

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

1.1

1.png

变化

adapter:

mixer 增加了一个进程外的 adapter概念,即把原来集成在组件内部的插件变成了进程外的一个适配器,如此,当你需要修改插件时,无需修改 mixer本身。

gallery:

负责 istio 的配置验证,提取处理和分发,这些原本都是 pilot 的功能,但他们会导致 pilot 和底层的平台比如 k8s 耦合。

缺点

  • 性能
    插件又拆分,导致网络请求次数又增加
  • 易用性
    组件都需要单独部署,维护困难。

可见解耦虽好,但也不是银弹,我们始终还得坚持软件架构的取舍原则!

MVP 理论:开发团队通过提供最小化可行产品,获取用户反馈,并在最小化可行产品上持续地进行迭代直到产品达到一个相对稳定的状态。

回归单体

复杂是万恶之源,学会停止焦虑,爱上单体一Istio 开发团队

修正原有架构的复杂性:

  • 维护性
  • 多组件分离的必要性
  • 伸缩性
  • 安全性

1.png

istod

Istiod 提供服务发现、配置和证书管理。


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


Istio 可以支持对 Kubernetes 或 VM 等多种环境的发现。


可以使用 Istio 的流量管理 API 来指示 Istiod 细化 Envoy 配置,以对服务网格中的流量进行更精细的控制。


Istiod 安全性通过内置身份和凭证管理实现强大的服务到服务和最终用户身份验证。您可以使用 Istio 升级服务网格中未加密的流量。使用 Istio,运营商可以基于服务身份而不是相对不稳定的第 3 层或第 4 层网络标识符来实施策略。此外,可以使用 Istio 的授权功能来控制谁可以访问你的服务。


Istiod 充当证书颁发机构 (CA) 并生成证书以允许数据平面中的安全 mTLS 通信。

image.png

目录
打赏
0
0
0
0
1891
分享
相关文章
Kotlin教程笔记 - 适合构建中大型项目的架构模式全面对比
Kotlin教程笔记 - 适合构建中大型项目的架构模式全面对比
56 3
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
59 13
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
android做中大型项目完美的架构模式是什么?是MVVM吗?如果不是,是什么?
android做中大型项目完美的架构模式是什么?是MVVM吗?如果不是,是什么?
179 2
一个适用于 .NET 的开源整洁架构项目模板
一个适用于 .NET 的开源整洁架构项目模板
59 26
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
@icraft/player-react 是 iCraft Editor 推出的 React 组件库,旨在简化3D数字孪生场景的前端集成。它支持零配置快速接入、自定义插件、丰富的事件和方法、动画控制及实时数据接入,帮助开发者轻松实现3D场景与React项目的无缝融合。
282 8
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
android做中大型项目完美的架构模式是什么?是MVVM吗?如果不是,是什么?
在 Android 开发中,选择合适的架构模式对于构建中大型项目至关重要。常见的架构模式有 MVVM、MVP、MVI、Clean Architecture 和 Flux/Redux。每种模式都有其优缺点和适用场景,例如 MVVM 适用于复杂 UI 状态和频繁更新,而 Clean Architecture 适合大型项目和多平台开发。选择合适的架构应考虑项目需求、团队熟悉度和可维护性。
89 6
在实际项目中,如何选择使用 Flux 架构或传统的 MVC 架构
在实际项目中选择使用Flux架构或传统MVC架构时,需考虑项目复杂度、团队熟悉度和性能需求。Flux适合大型、高并发应用,MVC则适用于中小型、逻辑简单的项目。
云原生安全:Istio在微服务架构中的安全策略与实践
【10月更文挑战第26天】随着云计算的发展,云原生架构成为企业数字化转型的关键。微服务作为其核心组件,虽具备灵活性和可扩展性,但也带来安全挑战。Istio作为开源服务网格,通过双向TLS加密、细粒度访问控制和强大的审计监控功能,有效保障微服务间的通信安全,成为云原生安全的重要工具。
75 2
Android适合构建中大型项目的架构模式全面对比
Android适合构建中大型项目的架构模式全面对比
74 2
使用 Istio 缓解电信 5G IoT 微服务 Pod 架构的安全挑战
使用 Istio 缓解电信 5G IoT 微服务 Pod 架构的安全挑战
87 8

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等