阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

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:161420

评论

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

Capital

Echo_Wish

学习 进步 笔记 资源 本质

DevData Talks 直播预告 | 微众银行的研发效能实践有哪些经验?

思码逸研发效能

研发效能 DevData Talks

复旦邱锡鹏:深度剖析 ChatGPT 类大语言模型的关键技术

NLP资深玩家

人工智能 ChatGPT

易观:正视GPT-4功能缺陷与能力局限可更好探索大模型应用

易观分析

科技

为什么 APISIX Ingress 是比 Emissary-ingress 更好的选择?

API7.ai 技术团队

全球运营商的新共识:2025走向自智网络L4

脑极体

自智网络

百度版ChatGPT:文心一言发布会盛大召开!

雪奈椰子

字节跳动DataLeap数据血缘实践

Openlab_cosmoplat

数据 开源社区 数据血缘

【Docker】MacOs安装

Aldeo

Docker 云原生

干货 | BitSail Connector开发详解系列一:Source

字节跳动数据平台

开源 数据集成 数据引擎 企业号 3 月 PK 榜

屡试不爽!一份阿里Java程序性能实战笔记,啃完让你程序快上200%

Java你猿哥

Java ssm 面经

李彦宏文心一言发布会 highlight

B Impact

设计模式-策略模式

黑客不够黑

设计模式 策略模式

在追求卓越的路上,面对压力时,推荐你这二个做法。

叶小鍵

openGemini正式加入openEuler DB SIG,携手开展全方面技术创新

华为云开源

时序数据库

两会代表热议采用ChatGPT指导论文写作:防范抄袭的探索与思考

蓝海大脑GPU

人工智能 深度学习 ChatGPT

微帧自研|客观评价模型与主观DMOS分数拟合的分享与实用性探讨

微帧Visionular

计算机视觉 视频编解码

软件测试/测试开发丨学习Docker就应该掌握的dockerfile语法与指令

测试人

Docker 软件测试 测试开发

2 万字长文:声明式配置技术概述

Peefy

DevOps 编程语言 开发者工具 #Kubernetes# #开源

无需二次开发,SOAP-to-REST 简化企业用户的业务迁移和整合

API7.ai 技术团队

专业HTML文本编辑器:BBEdit 激活版

真大的脸盆

Mac Mac 软件 文本编辑器 文本编辑

关于文件传输协议,你不知道的事

镭速

软件测试/测试开发丨Docker 镜像构建可以分享的快乐

测试人

Docker 软件测试 测试开发

最佳实践|焱融全闪存储实现与美的集团破千万 IOPS 性能

焱融科技

文件存储 分布式文件存储 高性能存储 全闪存储 美的

使用价值三角方法来全方位分析产品

产品海豚湾

产品 产品经理 产品设计 产品运营 商业洞察

让 API 管理效率更进一步的 API7 DevPortal

API7.ai 技术团队

api 网关 API7

《2022年IT行业项目管理调查报告》重磅发布!

禅道项目管理

最强阿里及大厂350道面试大全:框架+数据库+并发+开源+微服务

Java你猿哥

Java 数据库 架构 微服务 面经

TCP 三次握手,给我长脸了噢

程序员小富

TCP

GPT-4炸圈--多模态大模型

江湖修行

人工智能 大模型 GPT ChatGPT GPT-4

如何让人形机器人“行稳致远”?这篇顶级期刊的论文提出了新方法

优必选科技

机器人

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