如果您的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:8848reference-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