如果您的Dubbo应用已经部署到生产环境并处于正常运行状态中,此时想将应用迁移到EDAS享受完整的EDAS功能,那么在迁移过程中,保证业务的平稳运行不中断是第一要务,而保证应用平台运行不中断迁移到EDAS即为平滑迁移。本文介绍如何将应用平滑迁移到EDAS中,并实现基本的服务注册与发现。
前提条件
已将Dubbo应用部署至阿里云。
- 如果您的Dubbo应用还未部署到阿里云,请加入钉群(钉群号:31723701)联系产品技术专家为您提供完整的上云及迁移到EDAS方案。
- 如果您的应用尚未在生产环境中运行,或者您可以接受停机迁移,则无需按照本文进行平滑迁移,可直接将应用在本地开发完再部署到EDAS。具体操作,请参见开始使用EDAS。
迁移到EDAS的优势
功能 | 描述 |
---|---|
应用部署 | 启动参数灵活配置、流程可视化、服务优雅上下线和分批发布等功能,让您的应用发布可配、可查、可控。 |
服务发现与配置管理 | 您无需再自行运维Eureka、ZooKeeper、Consul等中间件组件,可直接使用EDAS提供的商业版服务发现与配置管理的功能。 |
服务治理 | 目前支持查询发布和消费的服务详情。 |
动态扩缩容 | 您可根据流量高峰和低谷实时地为您的应用扩容和缩容。 |
高级监控 | 除了支持基本的实例信息查询外,EDAS还支持微服务调用链查询、系统调用拓扑图、慢SQL查询等高级监控功能。 |
限流降级 | 限流降级功能保证您的应用高可用。 |
全链路灰度 | 全链路灰度功能满足您的应用在迭代、更新时通过灰度进行小规模验证的需求。 |
迁移流程
下图是一个比较典型的应用架构,根据迁移的先后顺序需要将迁移流程分为三步。

- (必选)迁移应用
迁移的应用一般都是无状态的,所以这一步是可以先进行。同时,本文将重点介绍如何迁移应用。
- (可选)迁移SLB或修改域名配置
在应用迁移完成后,您还需要迁移SLB或修改域名配置。
- 可选:迁移存储和消息队列
- 如果应用已经部署在阿里云,存储和消息队列也使用阿里云相关产品(例如RDS、MQ等),则应用迁移完成后,之前的存储和消息队列无需迁移。
- 如果应用未部署在阿里云,请加入钉群(钉群号:31723701)联系产品技术专家为您提供完整的上云及迁移到EDAS方案。
本文将主要介绍如何迁移应用。如果您想通过一个Demo快速体验平滑迁移的过程,可下载Demo,按照Readme运行一个迁移的样例。
迁移方案
迁移应用有以下两种方案,这两种方案都可以保证您的应用正常运行且不中断的完成迁移。
切流迁移方案
使用Dubbo将原有的服务注册中心切换到EDAS ConfigServer,开发一套新的应用部署到EDAS,最后通过SLB和域名配置来切流。
如果您选择此方案,无需再阅读迁移应用的后续内容,可直接使用Spring Boot开发Dubbo微服务应用。具体操作,请参见使用Spring Boot开发Dubbo微服务应用。
双注册和双订阅迁移方案
双注册和双订阅迁移方案是指在应用迁移时同时接入两个注册中心(原有注册中心和EDAS注册中心)以保证已迁移的应用和未迁移的应用之间实现相互调用。
通过双注册和双订阅平滑迁移应用的流程图如下:
- 初始状态
- 第一步
- 第二步
- 第三步
- 第四步
通过双注册和双订阅平滑迁移应用的优点:
- 已迁移的应用和未迁移的应用可以互相发现 ,从而实现互相调用,保证了业务的连续性。
- 使用方式简单,只需要添加依赖,并修改一行代码,就可以实现双注册和双订阅。
- 支持查看消费者服务调用列表的详情,实时地查看到迁移的进度。
- 支持在不重启应用的情况下,动态地变更服务注册的策略和服务订阅的策略,只需要重启一次应用就可以完成迁移。
迁移第一个应用
选择最先迁移的应用时,建议从最下层Provider开始迁移。但如果调用链路太复杂,比较难分析,也可以任意选一个应用进行迁移。选择完成后,即可参考下面的迁移步骤迁移第一个应用。
迁移其它所有应用
参照迁移第一个应用的步骤,依次将所有应用迁移到EDAS。
清理迁移配置
迁移完成后,删除原有的注册中心的配置和迁移过程专用的依赖edas-dubbo-migration-bom
。
修改对应的注册中心地址,即将ZooKeeper的配置删除,保证Consumer只从EDAS订阅,Provider只在EDAS订阅。有以下两种方式:
- 方式一:动态配置
关于配置修改,请参见本地验证。
- 方式二:手动修改
当所有的应用都修改完成之后,修改应用的注册中心地址,将订阅的地址改为EDAS ConfigServer。
dubbo.registry.address = edas-migration://30.5.XX.XX:9999?service-registry=edas://127.0.XX.XX:8080,zookeeper://172.31.XX.XX:2181&reference-registry=edas://127.0.XX.XX:8080&config-address=127.0.0.1:8848
reference-registry
的值从zookeeper://172.31.XX.XX:2181
改为edas://127.0.XX.XX:8080
。修改完成之后,即可部署应用。说明应用迁移完成之后,如果不再使用
ZooKeeper
,需要从注册中心配置中删除zookeeper://172.31.20.219:2181
。长期使用旧的ZooKeeper不影响业务的稳定性,但会增加Dubbo使用注册中心的复杂性,继而导致出错率上升。推荐您在迁移完毕后即时清理旧的ZooKeeper,并在业务量较小的时间分批重启应用。最终示例地址如下。
dubbo.registry.address = edas://127.0.XX.XX:8080