仓库源文站点原文


layout: post

title: "Aeraki Mesh 正式成为 CNCF 沙箱项目" subtitle: "新的起点,砥砺前行" description: "6月15日,我在创建的 Aeraki Mesh 项目通过了全球顶级开源基金会云原生计算基金会(CNCF)技术监督委员会评定,正式成为CNCF 沙箱项目!这意味着 Aeraki Mesh 得到了云原生开源社区的认可,而且加入 CNCF 也保证了项目的中立和开源开放,为 Aeraki Mesh 在云原生生态系统的进一步发展迈出了坚定的一步。感谢来着百度、知乎、灵雀云、腾讯音乐、滴滴、政采云等多家合作伙伴的社区同学的贡献与支持!" author:     "赵化冰" date: 2022-04-26 image: "img/2022-06-17-aeraki-mesh-cncf-sandbox/background.webp" published: true showtoc: false plantuml: true tags:

- Istio
- Envoy
- Aeraki
- MetaProtocol
- Tencent

categories:

- Tech
- Open Source

metadata:

- text: "官方网站"
  link: "https://aeraki.net"
- text: "Github"
  link: "https://github.com/aeraki-mesh"

6月15日,我创建的 Aeraki Mesh 项目通过了全球顶级开源基金会云原生计算基金会(CNCF)技术监督委员会评定,正式成为CNCF 沙箱项目!这意味着 Aeraki Mesh 得到了云原生开源社区的认可,而且加入 CNCF 也保证了项目的中立和开源开放,为 Aeraki Mesh 在云原生生态系统的进一步发展迈出了坚定的一步。

感谢来自百度、知乎、灵雀云、腾讯音乐、滴滴、政采云等多家合作伙伴的社区同学的贡献与支持!对我而言,CNCF Sandbox 绝不是终点,而是一个新的起点。社区即将举行会议规划下半年的需求,另外除了已经上线的腾讯音乐和央视频之外,目前已有多个产品正在在测试中,下半年将会有更多产品落地,敬请期待。

这一切的起点来自于 2017 年我与一个 IBM 工程师的对话。当时我在 Linux 基金会下一个开源项目 ONAP 中做一些微服务基础设施相关的工作。在 2017 年四月,我出差到硅谷参加 ONAP 的一个会议,遇到了这个名叫 Jason 的 IBM 工程师。他对我说,“赵,我们和 Google,Lyft 刚刚开源了一个叫 Istio 的项目,和你目前的工作类似,也许你会感兴趣的。” 正是这次偶然的对话,开启了我的服务网格之旅。我开始了解和学习 Istio 相关的知识,当我了解得越多,我就越发意识到 Istio 将是继 Kubernetes 之后云原生领域的又一个里程碑式的重要项目。并从 2018 年开始在我当时的公司中引入 Istio,运用在公司内部的管理平台中。这应该是国内最早一批落地的 Istio 项目之一。在这个过程中也向 Istio 提交了支持多网络平面,Consul 注册表优化等一系列 PR。

由于使用到了 Dubbo,我向 Istio 提交了支持 Dubbo 的 PR,该 PR 被社区讨论后决定拒绝,因为社区认为维护这些非 HTTP 协议的工作量和复杂度超过了社区的承受范围。于是我决定创建 Aeraki Mesh 项目来支持在 Istio 中支持第三方协议。

当我在 2020年11月3日将 Aeraki 的 README 提交到 Github 时,我写下了项目的愿景:“A framework to help you build a service mesh and understand any layer 7 protocols used in your mesh”。 当我写下这段话时,并没有想到在一年后的今天,Aeraki Mesh 已经支持了 Dubbo、Thrift、bRPC 等超过了七种自定义协议,为多个互联网大型项目的微服务提供了非 HTTP 协议的服务网格能力。成为 CNCF Sandbox 项目,意味着 Aeraki Mesh 成为了云原生服务网格象限中重要的组成部分,对我和整个 Aeraki Mesh 社区而言,这是一个新的里程牌。

在这里,我要感谢 Istio 和 Envoy 这两个伟大的项目,全球无数顶尖的程序员一起创造了 Istio 和 Envoy,Aeraki Mesh 所做的只是站在巨人的肩膀上而已。

其次,我要感谢为 Aeraki Mesh 社区做出贡献的同学,没有你们的贡献,Aeaki Mesh 无法在成立这么短时间内完成 CNCF Sandbox 的目标。

特别感谢:cocotyty 在项目初期的支持,我们还一起在第一届 IstioCon 上共同发表了一篇演讲,让更多人了解到了 Aeraki 这个项目。Sad-polar-bearwhitefirerESTLing 为 Aeraki Mesh 在 央视频腾讯音乐 中产品落地付出了很多努力。smwyzi 贡献了 bRPC 协议的实现代码。huanghuangzym 对 Dubbo 注册表对接的测试与改进。Xunzhuo 对社区流程和文档做了很多改进工作。我无法一一列出所有人,在这里感谢每一个为 Aeraki Mesh 提交 PR 和 Issue 的贡献者:

Aeraki Mesh 加入 CNCF 的这个时间点,恰好在Istio 宣布将 Istio 捐赠给 CNCF 基金会不久。作为 Service Mesh 开源领域的领军项目,Istio 受到了广大开发者的欢迎,加入 CNCF 标志着 Istio 和 K8s,Knative 三大云原生容器自动化框架纳入了同一个治理架构,Istio 和 CNCF 中其他的项目之间的合作将更为密切顺畅,也为 Istio 成为 Service Mesh 领域的事实标准扫清了最后的障碍。

然而 Istio 虽然强大,但主要处理 HTTP 协议,将其他协议看做 TCP 流量,这是服务网格在产品落地时遇到的主要问题之一。在微服务中经常会使用到其他的协议,例如 Dubbo、Thrift、Redis,以及私有协议等。只使用 Istio 无法对这些流量进行服务治理。Aeraki Mesh 提供了一种非侵入的、高度可扩展的解决方案来管理服务网格中的任何七层流量。Aeraki Mesh 在此时间节点加入 CNCF,在 Istio 中为非 HTTP 协议提供了和 HTTP 协议同等的治理能力,加速了服务网格成熟商用和产品落地的进程。

Aeraki [Air-rah-ki] 是希腊语 ”微风“ 的意思。 该命名的寓意是希望 Aeraki Mesh 这股“微风”能帮助 Istio 和 Kubernetes 在云原生的旅程中行得更快更远。Aeraki Mesh 的定位非常明确:只处理服务网格的非 HTTP 七层流量,将 HTTP 流量留给 Istio 。(我们认为现有的项目已经足够优秀,不必重新造轮子)。

正如该图所示,Aeraki Mesh 由以下几部分组成。

MetaProtocol Proxy 中已经支持了 Dubbo, Thrift ,bRPC 和 一系列私有协议。如果你正在使用一个闭源的专有协议,也可以在服务网格中管理它,只需为它编写一个 MetaProtocol 编解码器即可。

MetaProtcolProxy 对七层协议进行了高度抽象,提取了 Metadata 这个非常灵活的扩展机制,应用协议在解码过程中将协议中的关键属性填充到 Metadata 中,这些属性可以用于请求路由、限流等后续的七层 filter 处理。框架层将 Meatdata 作为透明的 key/value 值串进行处理,不需要理解协议的业务细节。该设计可以确保任何基于 MetaProtocol 开发的应用协议都能使用同一套控制面 API 进行管理,是 Aeraki 实现对 Dubbo、Thrift、bRPC 以及其他协议进行统一管理的基础。同时,MetaProtocolProxy 还提供了 Mutation 数据结构,用于在编码时对数据包进行修改,例如增加/修改请求头的内容。 下图是 MetaProtocolProxy 处理一个请求处理的过程:

Aeraki Mesh 的主要特点:

Aeraki Mesh 已经在央视频、腾讯音乐等大型项目中产品化落地,并经过了 2022 冬奥会线上大规模流量的实战检验。目前有多个产品正在接入测试中。百度、灵雀云、滴滴、政采云等多个合作伙伴已经加入社区进行共建。 Aeraki Mesh 社区正在大力发展中,欢迎大家加入!

Aeraki Mesh 产品落地实践:

媒体报道: