最近,腾讯云云加社区有一些关于 Dubbo 迁移 Istio 的文章,现总结如下。
Dubbo SDK 深度改造
- 文章地址:Dubbo on Istio 改造方案的思考
- 摘要: 为了拥抱云原生,本文尝试罗列 dubbo 需要的改动,并基于 2.7.7 的源码实际尝试了去除 dubbo 路由和负载均衡功能。
- 优点: 深度改造,尝试去除 dubbo 的服务治理相关功能,从Dubbo SDK上进行修改,能最大复用业务源码,并保持原有的dubbo 性能。
- 缺点:
- 修改了 dubbo SDK,后续可能无法与社区同步。
- 部署到 istio 中仍然是双注册中心。
改造成 SpringBoot 项目
- 文章地址:如何将一个 Dubbo 项目改造成一个 Service Mesh 项目?
- 摘要: 本篇介绍如何将一个 Dubbo 项目改造成一个 SpringBoot K8S Istio 项目的全过程,实现了在不改变 Dubbo 项目整体代码结构的基础上,向 Service Mesh 云原生项目的蜕变。
- 优点: 保留了 Dubbo 项目的整体代码结构,可以最大化利用 Istio 的服务治理能力,
- 缺点:
- 需要修改业务代码的 facade 层,增加 restful 注解。
- 需要改造成 http 协议,会对访问性能产生影响。
轻量化改造
- 文章地址:Dubbo to Istio / Dubbo Mesh 极简改造指南
- 摘要: 通过 Dubbo 本身的能力,去除 Dubbo 的注册中心,无需改造 Dubbo SDK,无需更换 Dubbo 协议,直接使用 istio 治理 Dubbo 流量。
- 优点: 对业务代码基本无改动。
- 缺点:
- 无法完整使用 istio 的服务治理能力,基于 Header 的流量管控 目前无法实现。
- 链路追踪需要自己实现(或使用原来的)。
迁移态
- Dubbo 应用和 Mesh,在不同集群下的应用互通,《Dubbo on Istio 改造方案的思考》 这篇文章中的 第 5 章有论述。
- Dubbo 应用在相同集群下,通过开放 excludeOutboundPorts,excludeInboundPorts 端口,解除 sidecar 的流量劫持进行互通,在 《Dubbo 与 Istio 共生》中有描述。