6 月 16 日消息,全球顶级开源基金会 CNCF(云原生计算基金会)宣布,腾讯云服务网格开源项目Aeraki Mesh通过 CNCF 技术监督委员会评定,正式成为 CNCF 沙箱项目,也是国内首个加入 CNCF 的服务网格项目。后续该项目代码、文档、官网等内容的所有权将全面由 CNCF 基金会进行托管,项目的中立性和开放性将进一步提升。
根据介绍,Aeraki [Air-rah-ki] 是希腊语“微风”的意思,该命名的寓意是希望 Aeraki Mesh 这股“微风”能帮助 Istio 和 Kubernetes 在云原生的旅程中行得更快更远。Aeraki Mesh 的定位非常明确:只处理服务网格的非 HTTP 七层流量,将 HTTP 流量留给 Istio 。
Aeraki Mesh 架构
上图显示,Aeraki Mesh 由 Aeraki 和 MetaProtocol Proxy 两部分组成。
Aeraki 工作在控制面,为运维提供高层次、用户友好的流量管理规则,将规则转化为 envoy 代理配置,并利用 Istio 提供的标准接口将配置推送给数据面的 sidecar 代理。 Aeraki 还在控制面中充当了 MetaProtocol Proxy 的 RDS(路由发现服务)服务器。不同于专注于 HTTP 的 Envoy RDS,Aeraki RDS 旨在为所有七层协议提供通用的动态路由能力。
MetaProtocol Proxy 工作在数据面,是一个七层代理框架,为七层协议提供了常用的流量管理能力,如负载均衡、熔断、路由、本地/全局限流、故障注入、指标收集、调用跟踪等等。开发者可以基于 MetaProtocol Proxy 提供的通用能力创建自己专有协议的七层代理。
根据腾讯云高级工程师赵化冰介绍,开发者如果要在服务网格中加入一个新的协议,唯一需要做的是实现编解码器接口(通常只需数百行代码)和几行 yaml 配置。MetaProtocol Proxy 还提供了一个扩展机制,允许用户编写自己的七层过滤器,将自定义的逻辑加入 MetaProtocol Proxy 中。
MetaProtocol Proxy 架构
MetaProtcolProxy 对七层协议进行了高度抽象,提取了 Metadata 这个非常灵活的扩展机制。应用协议在解码过程中将协议中的关键属性填充到 Metadata 中,这些属性可以用于请求路由、限流等后续的七层 filter 处理。框架层将 Meatdata 作为透明的 key/value 值串进行处理,不需要理解协议的业务细节。该设计可以确保任何基于 MetaProtocol 开发的应用协议都能使用同一套控制面 API 进行管理,是 Aeraki 实现对 Dubbo、Thrift、bRPC以及其他协议进行统一管理的基础。
同时,MetaProtocolProxy 还提供了 Mutation 数据结构,用于在编码时对数据包进行修改,例如增加/修改请求头的内容。MetaProtocolProxy 处理请求过程如下:
据悉,早在 2017 年,腾讯云容器团队就选定 Istio 为技术路线,开始服务网格的相关研发工作。但 Istio 主要处理 HTTP 协议,微服务中经常使用到的其他协议,如 Dubbo、Thrift、Redis 以及私有协议等,只使用 Istio 无法对其进行服务治理。这也是服务网格落地的主要困难之一。
在这个过程中,腾讯云推出了一种非侵入的、高度可扩展的解决方案 Aeraki Mesh。根据赵化冰介绍,Aeraki Mesh 主要特点包括:
和 Istio 无缝集成,是 Istio Ecosystem 集成推荐项目。开发者可以采用 Istio + Aeraki Mesh 来构建一个可以同时管理 HTTP 和其他七层协议的全栈服务网格。
支持在 Istio 中管理 Dubbo、Thrift、Redis 等开源协议的流量。
支持在 Istio 中管理私有协议的流量,只需数百行代码,对 Istio 无任何改动。
支持请求级负载均衡,支持任意匹配条件的动态路由,全局和本地限流,流量镜像等强大的七层流量管理能力。
提供丰富的请求级性能指标,包括请求时延、错误、数量等,支持分布式调用跟踪。
对 Istio、Envoy 等上游开源项目完全无侵入,可以跟随上游项目进行快速迭代,充分利用上游项目新版本提供的新增能力。
据了解,Aeraki Mesh 由腾讯云主导,百度、灵雀云、腾讯音乐、滴滴、政采网等多家企业参与共建。此前,Aeraki Mesh 已加入 CNCF Landscape 云原生全景图,并经过 2022 冬奥会线上直播及央视频、腾讯音乐、小红书等多个超大型项目的实战检验。
评论