写点什么

Service Mesh 发展趋势:云原生中流砥柱(上)

  • 2019-10-18
  • 本文字数:3693 字

    阅读完需:约 12 分钟

Service Mesh 发展趋势:云原生中流砥柱(上)

本文内容整理自 5 月 25 日 在 Kubernetes & Cloud Native Meetup 上海站发表的主题演讲,主要介绍了 Service Mesh 最新的产品动态,分析其发展趋势和未来走向;结合蚂蚁金服的上云实践,阐述在云原生背景下 Service Mesh 的核心价值,以及对云原生落地的关键作用。


内容主要有三个部分:


  1. Service Mesh 产品动态:介绍最近半年 Service Mesh 的产品动态,包括开源项目和云厂商推出的云上服务;

  2. Service Mesh 发展趋势:根据最近的产品动态,总结 Service Mesh 的发展趋势,推断未来的走向;

  3. Service Mesh 与云原生:结合云原生,更好的理解 Service Mesh 的价值和作用。

Service Mesh 产品动态

Istio 1.1 发布

Istio 是目前 Service Mesh 社区最引人注目的开源项目,在今年的 3 月份 发布了期待已久的 Istio 1.1 版本,我们来看看 Istio 最近几个版本的发布情况:


  • 2018 年 6 月 1 日,Istio 发布了 0.8 版本,这是 Istio 历史上第一个 LTS 版本,也是 Istio 历史上变动最大的一个版本;

  • 2018 年 7 月 31 日,Istio 发布了 1.0 版本,号称 “Product Ready”;

  • 然后就是漫长的等待,Istio 1.0 系列以每个月一个小版本的方式一路发布了 1.0.1 到 1.0.6,然后才开始 1.1.0 snapshot 1 到 6,再 1.1.0-rc 1 到 6,终于在 2019 年 3 月 20 日 发布了 1.1 版本,号称 “Enterprise Ready”。


从 Istio 1.0 到 Istio 1.1,中间的时间跨度高达 9 个月!我们来看看经过这漫长的开发时间才发布的 Istio 1.1 版本带来了哪些新的东西:



图中标红的部分,涉及到 Istio 的架构调整,下面将详细介绍 Istio 1.1 版本中带来的架构变化。

Istio 1.1 架构变化

下图是 Istio 1.0 和 Istio 1.1 的架构图对比:



Istio 1.1 的第一个架构变化来自 Galley:在 Istio 1.1 的架构图中增加了 Galley 组件。但是实际上在 Istio 1.0 版本中 Gallay 组件就已经存在,只是当时 Galley 的功能非常简单,只是做配置更新之后的验证(Validation),在 Istio 1.0 的架构图中都没有出现。而在 Istio 1.1 版本之后,Galley 的定位发生了巨大的变化:Galley 开始分担 Pilot/Mixer 的职责。


在 Istio 1.1 版本之前的设计中,Istio 的三大组件 Pilot/Mixer/Citadel 都需要访问 Kubernetes 的 API Server,以获取服务注册信息和配置信息,包括 Kubernetes 原生资源如 service/deployment/pod 等,还有 Istio 的自定义资源(数量多达 50 多个的 CRD) 。这个设计导致 Istio 的各个组件都不得不和 Kubernetes 的 API Server 产生强绑定,不仅仅代码大量冗余,而且在测试中也因为需要和 Kubernetes 的 API Server 交互导致 Pilot/Mixer 模块测试困难。


为了解决这个问题,在 Istio 1.1 之后,访问 Kubernetes 的 API Server 的工作将逐渐交给 Galley 组件,而其他组件如 Pilot/Mixer 就会和 Kubernetes 解耦。



这个工作还在进行中,目前 Istio 的 CRD 已经修改为由 Galley 读取,而 K8s 的原生资源(Service / Deployment / Pod 等),暂时还是由 Pilot 读取。


为了方便在各个组件中同步数据,Istio 引入了 MCP(Mesh Configuration Protocol)协议。在 Istio 1.1 版本中,Pilot 通过 MCP 协议从 Galley 同步数据。MCP 是受 xDS v2 协议(准确说是 aDS)的启发而制定的新协议,用于在 Istio 各模块之间同步数据。


Istio 1.1 的第二个架构变化来自于 Mixer,在 Istio 1.1 版本中,推荐使用 Out-of-Process Adapter,即进程外适配器。Istio 预计下一个版本将弃用 In-Proxy Adapter,目前所有的 Adapter 都将改为 Out-of-Process adapter。


什么是 In-Proxy Adapter?下图是 Mixer 的架构图,在 Istio 的设计中,Mixer 是一个独立进程,Proxy 通过远程调用来和 Mixer 交互。而 Mixer 的实现了 Adapter 模式,定义了 Adapter API,然后内建了数量非常多的各种 Adapter。这些 Adatper 的代码存放在 Mixer 代码中,运行时也在 Mixer 的进程内,因此称为 In-Process Adapter。



In-Process Adapter 的问题在于所有的 Adapter 的实现都和 Mixer 直接绑定,包括代码和运行时。因此当 Adapter 需要更新时就需要更新整个 Mixer,任意一个 Adapter 的实现出现问题也会影响整个 Mixer,而且数量众多的 Adapter 也带来了数量众多的 CRD。为此,Istio 1.1 版本中通过引入 Out-of-Process Adapter 来解决这个问题。



Out-of-Process Adapter 以独立进程的方式运行在 Mixer 进程之外,因此 Out-of-Process Adapter 的开发/部署和配置都可以独立于 Mixer,从而将 Mixer 从 Adaper 的实现细节中解脱出来。


但是,Out-of-Process Adapter 的引入,会导致新的性能问题:原来 Mixer 和 In-Process Adapter 之间是方法调用,现在改成 Out-of-Process Adapter 之后就变成远程调用了。而 Mixer 一直以来都是 Istio 架构设计中最大的争议,之前 Proxy 和 Mixer 之间的远程调用,已经造成非常大的性能瓶颈,而引入 Out-of-Process Adapter 之后远程调用会从一次会变成多次(每个配置生效的 Out-of-Process Adapter 就意味着一次远程调用),这会让性能雪上加霜。


总结 Out-of-Process Adapter 的引入:架构更加的优雅,性能更加的糟糕。


在 Istio 1.1 为了架构而不顾性能的同时,Istio 内部也有其他的声音传出,如正在规划中的 Mixer v2。这个规划最重要的决策就是放弃 Mixer 独立进程的想法,改为将 Mixer 的功能合并到 Envoy 中,从而避免 Envoy 和 Mixer 之间远程调用的开销。关于 Mixer 的性能问题和 Mixer 合并的思路,蚂蚁金服在去年六月份开始 SOFAMesh 项目时就有清晰的认识和计划,时隔一年,终于欣喜的看到 Istio 开始正视 Mixer 的架构设计问题并回到正确的方向上。


目前 Mixer v2 的规划还处于 Review 状态,实现方式尚未有明确决定。如果要合并 Mixer,考虑到目前 Mixer 是基于 Golang 编写,而 Envoy 是基于 C++,这意味着需要用 C++ 重写所有的 Adapter,工作量巨大,恐怕不是短期之内能够完成的。当然也有另外一个新颖(或者说脑洞大开)的思路:引入 Web Assembly(WASM)。目前 Envoy 在进行支持 Web Assembly 的尝试,如果成功,则通过 Web Assembly 的方式来支持 Mixer Adapter 不失为一个好选择。

其他社区产品动态

最近,CNCF 在筹建 Universal Data Plane API (UDPA/通用数据平面 API)工作组,以制定数据平面的标准 API,为 L4/L7 数据平面配置提供事实上的标准。Universal Data Plane API 的创意来自 Envoy,实现为 xDS API。而目前 xDS v2 API 已经是数据平面 API 的事实标准,这次的 UDPA 会以 xDS v2 API 为基础。工作组的初始成员来自包括 Envoy 和 gRPC 项目的代表,蚂蚁金服也在积极参与 UDPA 工作组,目前还处于非常早期的筹备阶段。


Linkerd2 在 2019 年 4 月 17 日 发布了最新的稳定版本 Linkerd 2.3 版本。Linkerd2 是目前开源产品中唯一正面对抗 Istio 的存在,不过在国内知名度不高,使用者也很少。比较有意思的是,开发 Linkerd2 的初创公司 Buoyant 最近的 B 轮融资来自 Google 的投资部门。

云厂商的产品动态

随着 Service Mesh 技术的发展,和各方对 Service Mesh 前景的看好,各大主流云提供商都开始在 Service Mesh 技术上发力。


首先看 AWS,在 2019 年 4 月,AWS 宣布 App Mesh GA。App Mesh 是 AWS 推出的 AWS 原生服务网格,与 AWS 完全集成,包括:


  • 网络(AWS cloud map)

  • 计算(Amazon EC2 和 AWS Fargate)

  • 编排工具(AWS EKS,Amazon ECS 和 EC2 上客户管理的 k8s)



App Mesh 的数据平面采用 Envoy,产品非常有创意的同时支持 VM 和容器,支持多种产品形态,如上图所示。(AWS App Mesh 的更多详细内容,请浏览文章用 AWS App Mesh 重新定义应用通讯 [5])


Google 的打法则是围绕 Istio 。首先是在 2018 年底推出了 Istio on GKE,即"一键集成 Istio",并提供遥测、日志、负载均衡、路由和 mTLS 安全能力。接着 Google 又推出 Google Cloud Service Mesh,这是 Istio 的完全托管版本,不仅仅提供 Istio 开源版本的完整特性,还集成了 Google Cloud 上的重要产品 Stackdriver 。


近期,Google 推出 Traffic Director 的 beta 测试版本,Traffic Director 是完全托管的服务网格流量控制平面,支持全局负载均衡,适用于虚拟机和容器,提供混合云和多云支持、集中式健康检查和流量控制,还有一个非常特别的特性:支持基于流量的自动伸缩。



(Google Traffic Director 的详细介绍,请查看文章 Google Traffic Director 详细介绍 [6])


微软则推出了 Service Fabric Mesh。Azure Service Fabric 是 Microsoft 的微服务框架,设计用于公共云,内部部署以及混合和多云架构。而 Service Fabric Mesh 是 Azure 完全托管的产品,在 2018 年 8 月 推出预览版。



上周(5 月 21 号)最新消息,微软在 KubeConf 上推出 Service Mesh Interface。SMI 是在 Kubernetes 上运行服务网格的规范,定义了由各种供应商实现的通用标准,使得最终用户的标准化和服务网格供应商的创新可以两全其美,SMI 预期将为 Service Mesh 带来了灵活性和互通性。


SMI 是一个开放项目,由微软、Linkerd、HashiCorp、Solo、Kinvolk 和 Weaveworks 联合启动;并得到了 Aspen Mesh、Canonical、Docker、Pivotal、Rancher、Red Hat 和 VMware 的支持。



2019-10-18 18:161828

评论

发布
暂无评论
发现更多内容

优化YashanDB的读写性能

数据库砖家

在YashanDB数据库中实现定时任务调度

数据库砖家

淘宝商品评论API接口全解析:从数据采集到情感分析

tbapi

淘宝商品评论接口 天猫商品评论接口 淘宝API 淘宝商品评论API 天猫商品评论API

KingbaseES 到 Apache Doris 实时同步实践|国产数据库数据入仓解决方案

tapdata

Tapdata 日志解析 KingbaseES实时同步 Doris数据入仓 国产数据库,数据类型映射

ByteBrain x 清华 VLDB25|时序多模态大语言模型 ChatTS

火山引擎开发者社区

火山引擎

如何优化YashanDB数据库的写入性能

数据库砖家

在YashanDB中优化查询性能的技术分析

数据库砖家

2026第二届杭州国际人形机器人与机器人技术展览会

AIOTE智博会

机器人展 智能机器人展 人形机器人展

时序数据库技术创新大会:以 IoTDB 为核心,洞见「DB + AI」的工业物联未来

Apache IoTDB

如何使用YashanDB优化Web应用的后端数据处理

数据库砖家

在YashanDB数据库中实现高效的并发控制

数据库砖家

数字化转型三阶段:信息化、数字化、数智化分别代表着什么?

优秀

数字化 信息化 数智化

如何优化YashanDB数据库以提升数据处理速度?

数据库砖家

天下拍“同步拍”模式:让异地竞拍变得触手可及

至存网络

拍卖系统 拍卖软件 艺术品拍卖 资产拍卖 竞拍

时序数据库 TDengine × SSRS:自动报表的高性能组合拳

TDengine

tdengine 数据 时序数据库 报表

如何使用YashanDB数据库实现海量数据的快速检索

数据库砖家

优化YashanDB数据库的查询性能

数据库砖家

满血DeepSeek加持的AlphaGPT,助力高文律师事务所全面拥抱AI

科技汇

全球研讨会|知识图谱赋能数据平台价值升级

Altair RapidMiner

人工智能 机器学习 AI 数据分析 知识图谱

如何使用YashanDB提升企业数据库性能?实用指南

数据库砖家

官宣 | Fluss 0.7 发布公告:稳定性与架构升级

Apache Flink

原点安全签约广西北部湾银行,实现多场景一体化数据安全平台建设

原点安全

AI 英语口语 App 的开发

北京木奇移动技术有限公司

软件外包公司 AI听力 AI英语学习

报名开启!AI 助力快速设计仿真技术研讨会(浙江温岭)

Altair RapidMiner

AI 制造业 CAE Inspire Simlab

如何使用YashanDB数据库优化企业数据策略

数据库砖家

四个理由让你选择YashanDB数据库作为首选

数据库砖家

在YashanDB数据库中优化存储空间的方法介绍

数据库砖家

在YashanDB中如何实现高效的数据恢复和备份策略?

数据库砖家

如何使用YashanDB提高团队的工作效率

数据库砖家

如何为YashanDB数据库设计合适的架构?

数据库砖家

LanceDB:AI时代的多模态数据湖

火山引擎开发者社区

火山引擎

Service Mesh 发展趋势:云原生中流砥柱(上)_文化 & 方法_敖小剑_InfoQ精选文章