仓库源文站点原文


layout: post title: "Aeraki Mesh 发布 1.3.0 版本(代号:Dragonboat)" subtitle: "" description: "Aeraki Mesh 于 2023 年 6 月 24 日发布 1.3.0 版本(版本代号:Dragonboat),该版本包含了对 Istio 1.16.x 系列版本的支持,以及支持多路复用,gateway 支持 MetaProtoco 等一系列重大的新增特性。" author: "赵化冰" date: 2023-06-24 image: "/img/2023-06-24-aeraki-1.3.0/dragonboat.jpg" published: true tags:

- Aeraki Mesh

categories:

- Tech

showtoc: true

Aeraki Mesh 于 2023 年 6 月 24 日发布 1.3.0 版本(版本代号:Dragonboat),该版本包含了对 Istio 1.16.x 系列版本的支持,以及支持多路复用,gateway 支持 MetaProtoco 等一系列重大的新增特性。

Aeraki Mesh 采用新 Logo

由于原来的 logo 存在版权问题,Aeraki Mesh 启用 CNCF 设计的新 logo,如下图所示。该 logo 已经全面应用于 Aeraki Mesh 的 Github repo 和官网。如果大家在相关网站或者文档上发现还有旧 logo,欢迎提交 issue 和 PR。

支持 Istio 1.16.x 版本

支持多路复用

如下图左半部分所示,在之前的版本中,MetaProtocolProxy 在处理请求时会从 upstream 连接池中 获取连接,每个请求占用一个 upstream 连接,请求完成后将连接释放到连接池重供后续请求使用。在该机制下,如果并发请求数量较大,会产生较多 upstream 连接(连接数量理论上同并发请求数量)。

在 1.3.0 版本中,MetaProtocolProxy 中引入了多路复用机制。其实现原理如下图右半部分所示,通过在 Connection Manager 中缓存 upstream conn_data 来实现多路复用。

备注:目前多路复用属于 alpha 特性,控制面尚不支持。在数据面可以通过设置 meta_protocol_proxy 的 multiplexing 属性为 true 打开进行测试,如下所示:

name: aeraki.meta_protocol_proxy
  typed_config:
    '@type': type.googleapis.com/aeraki.meta_protocol_proxy.v1alpha.MetaProtocolProxy
    protocol:
      name: dubbo
      codec:
        name: aeraki.meta_protocol.codec.dubbo
      multiplexing: true

Gateway 支持 MetaProtocol

本版本开始支持在 Gateway 上提供 MetaProtocol 七层路由能力。在 MetaRouter 上增加了 gateways 属性,可以通过该属性在 Gateway 上设置路由规则。下面的 yaml 片段展示了在 gateway 上对 Thrift 请求进行七层路由的例子。

---
apiVersion: metaprotocol.aeraki.io/v1alpha1
kind: MetaRouter
metadata:
  name: test-metaprotocol-thrift-route
  namespace: meta-thrift
spec:
  gateways:
    - istio-system/istio-ingressgateway
  hosts:
    - thrift-sample-server.meta-thrift.svc.cluster.local
  routes:
    - route:
        - destination:
            host: thrift-sample-server.meta-thrift.svc.cluster.local
            port:
              number: 9090
            subset: v1

Dubbo 服务 支持应用级服务治理

从本版本开始,支持按照应用(进程)和接口(Interface)两种粒度对 Dubbo 服务进行治理。

在 Dubbo 中,有一个 Interface 的概念,一个进程中通常会有多个I nterface。当将 Dubbo 应用加入到服务网格进行服务治理时,有两个选择:

可以看出,这两种治理方式各有优缺点。一般来说,当 Dubbo 应用规模较大、Interface 较多时,建议选择按照应用粒度进行服务治理,以减轻控制面负荷和 Sidecar 的资源消耗;当 Dubbo 应用规模较小、Interfac 数量较少时,建议选择按照 Interface 粒度进行服务治理,以提供最精细的流量治理能力。

Aeraki Mesh同时支持应用级和接口级服务治理。除了流量治理的粒度不同之外,这两种模式的路由、Metrics、Access log、Tracing 等能力是一致的。您可以根据自己的需求进行选择。

Dubbo 服务治理的更多内容请参见官网文档:https://www.aeraki.net/zh/docs/v1.x/tutorials/dubbo

Redis 流量管理

Redis 是一种高性能的键值数据库,通常被用作缓存、会话存储和消息代理等用途。Aeraki Mesh 提供了对 Redis 的流量管理能力,可以实现客户端无感知的 Redis Cluster 数据分片,按 key 将客户端请求路由到不同的 Redis 服务,读写分离,流量镜像,故障注入等高级流量管理功能。

Redis 流量管理的更多内容请参见官网文档: https://www.aeraki.net/zh/docs/v1.x/tutorials/redis

官方镜像库切换为 Github Packages

官方镜像库从 Docker Hub 切换到 Github Packages。

镜像下载地址:

完整变更列表

Aeraki

MetaProtocolProxy

贡献者

本版本的主要贡献者来自于 腾讯、百度、Boss 直聘、灵雀云、Tetrate。感谢以下贡献者为本版本付出的辛勤工作。

<table> <tbody> <tr> <td align="center" valign="top" width="16.66%"><a href="https://github.com/zhaohuabing"><img src="https://avatars.githubusercontent.com/u/1321762?v=3?s=100" width="100px;" /><br /><sub><b>zhaohuabing</b></sub></a><br /></td> <td align="center" valign="top" width="16.66%"><a href="https://github.com/woluohenga"><img src="https://avatars.githubusercontent.com/u/1475137?v=3?s=100" width="100px;" /><br /><sub><b>woluohenga</b></sub></a><br /></td> <td align="center" valign="top" width="16.66%"><a href="https://github.com/gaohongbin"><img src="https://avatars.githubusercontent.com/u/14954292?v=3?s=100" width="100px;" /><br /><sub><b>gaohongbin</b></sub></a><br /></td> <td align="center" valign="top" width="16.66%"><a href="https://github.com/huanghuangzym"><img src="https://avatars.githubusercontent.com/u/15240576?v=3?s=100" width="100px;" /><br /><sub><b>lihuang</b></sub></a><br /></td> <td align="center" valign="top" width="16.66%"><a href="https://github.com/fossabot"><img src="https://avatars.githubusercontent.com/u/29791463?v=3?s=100" width="100px;" /><br /><sub><b>fossabot</b></sub></a><br /></td> </tr> <tr> <td align="center" valign="top" width="16.66%"><a href="https://github.com/tanjunchen"><img src="https://avatars.githubusercontent.com/u/19339970?v=3?s=100" width="100px;" /><br /><sub><b>tanjunchen</b></sub></a><br /></td> <td align="center" valign="top" width="16.66%"><a href="https://github.com/asa3311"><img src="https://avatars.githubusercontent.com/u/19684366?v=3?s=100" width="100px;" /><br /><sub><b>asa3311</b></sub></a><br /></td> <td align="center" valign="top" width="16.66%"><a href="https://github.com/panniyuyu"><img src="https://avatars.githubusercontent.com/u/29516154?v=3?s=100" width="100px;" /><br /><sub><b>panniyuyu</b></sub></a><br /></td> <td align="center" valign="top" width="16.66%"><a href="https://github.com/mark8s"><img src="https://avatars.githubusercontent.com/u/47961301?v=3?s=100" width="100px;" /><br /><sub><b>mark8s</b></sub></a><br /></td> <td align="center" valign="top" width="16.66%"><a href="https://github.com/Xunzhuo"><img src="https://avatars.githubusercontent.com/u/48784001?v=3?s=100" width="100px;" /><br /><sub><b>Xunzhuo</b></sub></a><br /></td> </tr> </tbody> </table>

参考链接