如果您的Dubbo应用已经部署在阿里云上,您可以将应用迁移至Serverless 应用引擎 SAE(Serverless App Engine)。本文介绍如何将应用平滑迁移到SAE。
背景信息
步骤一:迁移第一个应用
本文以Demo应用演示平滑迁移。关于Demo应用的下载地址,请参见Demo。
制定应用迁移优先级。
选择迁移需求优先级高的应用,建议从最下层Provider开始迁移。如果调用链路太复杂,难以分析,可以任意选一应用进行迁移。
在应用程序中添加依赖并修改配置。
说明本文介绍的迁移方案为双注册双订阅方案。
在pom.xml文件中添加
edas-dubbo-migration-bom
依赖。<dependency> <groupId>com.alibaba.edas</groupId> <artifactId>edas-dubbo-migration-bom</artifactId> <version>2.6.5.1</version> <type>pom</type> </dependency>
在application.properties中添加SAE注册中心的IP地址。
dubbo.registry.address = edas-migration://192.168.XX.XX:9999?service-registry=edas://127.0.XX.XX:8080,zookeeper://192.168.XX.XX:2181&reference-registry=zookeeper://192.168.XX.XX:2181&config-address=127.0.XX.XX:8848
重要如果是非Spring Boot应用,您需要在dubbo.properties或者对应的Spring配置文件中进行设置。
参数
说明
edas-migration://192.168.XX.XX:9999
多注册中心的头部可以不做修改,启动的时候,因为Dubbo会对IP和端口进行校验,如果您的日志级别为WARN及以下,您可能会收到WARN的日志,请忽略该日志。
service-registry
服务的注册中心地址,支持服务的多注册中心,可以注入多个注册中心地址。每个注册中心均采用标准的Dubbo注册中心格式;多个用
,
分隔。示例中192.168.XX.XX
为ZooKeeper地址,请使用真实的ZooKeeper地址和端口。reference-registry
服务订阅的注册中心地址,支持多注册或者注册到未迁移前的注册中心。
config-address
动态推送的地址。
其他修改。
对于非Spring Boot的Spring应用,需要将
com.alibaba.edas.dubbo.migration.controller.EdasDubboRegistryRest
添加到您的扫描路径中。
本地验证。
此处以动态配置的方式为例。
验证准备。验证前,请确保您已完成以下操作:
检查服务是否成功注册。
登录轻量配置中心,在服务提供者列表中查看对应的服务。
登录ZooKeeper,查看服务注册和消费信息。
可选:登录Nacos,配置服务注册信息。
说明如果无需动态配置,可以跳过此步骤。
参数
说明
DataId
设置为dubbo.registry.config。
Group
设置对应Dubbo应用的名称applicationName,如dubbo-migration-demo-server。配置信息是应用维度,所以应用名不能重复。
配置内容
应用级别
dubbo.reference.registry=edas://127.0.XX.XX:8080 # 注册服务的注册中心地址。 dubbo.service.registry=edas://127.0.XX.XX:8080,zookeeper:127.0.XX.XX:2181 # 订阅服务的注册中心地址。
实例IP级别
192.168.XX.XX.dubbo.reference.registry=edas://127.0.XX.XX:8080,zookeeper:127.0.XX.XX:2181 192.168.XX.XX.dubbo.service.registry=edas://127.0.XX.XX:8080
集群验证时建议先验证实例IP级别,再验证整个应用。
查看迁移后应用调用是否正常,查看注册中心的注册订阅关系。
Spring Boot 1.x版本:http://ip:port/dubboRegistry
Spring Boot 2.x版本:http://ip:port/actuator/dubboRegistry
将应用部署到SAE。
根据实际需求将应用部署到SAE。具体操作,请参见应用托管概述。
结果验证。
观察业务运行是否正常。
查看服务订阅监控。
如果应用开启了Spring Boot Actuator监控功能,请访问Actuator查看此应用订阅的各服务的RibbonServerList信息。Actuator地址如下:
Spring Boot 1.x版本:http://ip:port/dubboRegistry
Spring Boot 2.x版本:http://ip:port/actuator/dubboRegistry
参数说明如下。
dubbo.orig.**
:应用中配置的注册中心信息。dubbo.orig.**
:生效的注册中心信息。
步骤二:迁移其他所有应用
依次将所有应用迁移到SAE。具体步骤,请参见步骤一:迁移第一个应用。
步骤三:清理迁移配置
迁移完成后,删除原有的注册中心配置和迁移过程专用的依赖edas-dubbo-migration-bom
。
修改对应的注册中心地址(即删除ZooKeeper的配置),保证Consumer、Provider仅从SAE订阅。方式如下。
方式一:动态配置。具体步骤,请参见本地验证。
方式二:手动修改。
所有的应用修改完成后,修改应用的注册中心地址,将订阅的地址改为SAE ConfigServer。
dubbo.registry.address = edas-migration://192.168.XX.XX:9999?service-registry=edas://127.0.XX.XX:8080,zookeeper://192.168.XX.XX:2181&reference-registry=edas://127.0.XX.XX:8080&config-address=127.0.XX.XX:8848
reference-registry
的值从zookeeper://192.168.XX.XX:2181
改为edas://127.0.XX.XX:8080
。修改完成后,即可部署应用。说明当应用迁移完成后,如果不再使用
ZooKeeper
,需要从注册中心配置中删除zookeeper://192.168.XX.XX:2181
。长期使用旧的ZooKeeper不影响业务的稳定性,但会增加Dubbo使用注册中心的复杂性,继而导致出错率上升。推荐您在迁移完毕后,及时清理旧的ZooKeeper,并在业务量较小的时间分批重启应用。最终示例地址如下。
dubbo.registry.address = edas://127.0.XX.XX:8080