如果您的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
添加到您的掃描路徑中。
- 在pom.xml文件中添加
- 本地驗證。此處以動態配置的方式為例。
- 驗證準備。驗證前,請確保您已完成以下操作:
- 檢查服務是否成功注冊。
- 登錄輕量配置中心,在服務提供者列表中查看對應的服務。
- 登錄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
文檔內容是否對您有幫助?