导读:Aeraki Mesh 是 CNCF 的沙箱项目,它可以帮助你在服务网格中管理任何七层协议。
云原生技术社区与赵化冰老师共同推出系列教程,该系列教程将介绍如何通过 Aeraki 来在服务网格中为 Dubbo、Thrift 等协议的服务提供七层流量路由、本地限流、全局限流,以及如何基于 Aeraki Protocol 快速开发一个自定义协议,并在 Istio 服务网格中对采用自定义协议的服务进行管理。
Aeraki Mesh 支持对 Dubbo 服务进行全面的七层服务治理,服务治理的粒度是 Dubbo interface。 治理能力包括七层负载均衡,动态路由,熔断,本地/全局限流,请求层面的 Metrics 收集和呈现等,后面还会支持调用跟踪,流量镜像等能力。 本文将介绍如何将 Dubbo 服务接入到 Aeraki Mesh 中进行服务治理。
Aeraki Mesh Dubbo 解决方案
Aeraki Mesh 的 Dubbo 服务治理解决方案如下图所示:
Aeraki Mesh 的 MetaProtocol Proxy 组件是一个数据面七层代理的通用框架,其中已经自带了 Dubbo codec 实现(下文将简称为 Meta-Dubbo)。
Aeraki 和 Istio 则一起作为控制面,通过 xDS 控制面标准接口下发 MetaProtocol Proxy 所需的配置信息。
Dubbo2Istio 可以连接 Dubbo 服务注册表,将其中注册的 Dubbo 服务转换为 ServiceEntry 资源,自动同步到 Istio 服务网格中。Dubbo2Istio 支持 ZooKeeper,Nacos,Etcd 三种类型的 Dubbo 服务注册表。
将 Dubbo 服务加入到服务网格中
对接 Dubbo 服务注册
采用 Dubbo2Istio 对接 Dubbo 服务注册表
这种方法需要在在 K8s 集群中部署一个 Dubbo2Istio 组件。Dubbo2Istio 将会监控 Dubbo 注册表的变化,自动将 Dubbo 注册表中的 Dubbo 服务同步到 Istio 内部的服务注册表中。该方法需要维护一个额外的 Dubbo2Istio 组件,好处是保留了 Dubbo 原有的服务注册表,同时兼容服务网格和 Dubbo SDK 两种服务发现方式,可以将 Dubbo 程序进行有计划地迁移到服务网格。
Dubbo2Istio 会为每个 Dubbo