全部產品
Search
文件中心

Serverless App Engine:將Dubbo應用平滑遷移至SAE

更新時間:Jul 04, 2025

如果您的Dubbo應用已經部署在阿里雲上,您可以將應用遷移至Serverless 應用引擎 SAE(Serverless App Engine)。本文介紹如何將應用平滑遷移到SAE

步驟一:遷移第一個應用

本文以Demo應用示範平滑遷移。關於Demo應用的下載地址,請參見Demo

  1. 制定應用遷移優先順序。

    選擇遷移需求優先順序高的應用,建議從最下層Provider開始遷移。如果調用鏈路太複雜,難以分析,可以任意選一應用進行遷移。

  2. 在應用程式中添加依賴並修改配置。

    說明

    本文介紹的遷移方案為雙註冊雙訂閱者案。

    1. 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>                            
    2. 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

      動態推送的地址。

    3. 其他修改。

      對於非Spring Boot的Spring應用,需要將com.alibaba.edas.dubbo.migration.controller.EdasDubboRegistryRest添加到您的掃描路徑中。

  3. 本地驗證。

    此處以動態配置的方式為例。

    1. 驗證準備。驗證前,請確保您已完成以下操作:

    2. 檢查服務是否成功註冊。

      • 登入輕量配置中心,在服務提供者列表中查看對應的服務。

      • 登入ZooKeeper,查看服務註冊和消費資訊。

    3. 可選:登入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層級,再驗證整個應用。

    4. 查看遷移後應用調用是否正常,查看註冊中心的註冊訂閱關係。

      • Spring Boot 1.x版本:http://ip:port/dubboRegistry

      • Spring Boot 2.x版本:http://ip:port/actuator/dubboRegistry

      Dubbo應用遷移1

  4. 將應用部署到SAE

    根據實際需求將應用部署到SAE。具體資訊,請參見應用部署

  5. 結果驗證。

    1. 觀察業務運行是否正常。

    2. 查看服務訂閱監控。

      如果應用開啟了Spring Boot Actuator監控功能,請訪問Actuator查看此應用訂閱的各服務的RibbonServerList資訊。Actuator地址如下:

      • Spring Boot 1.x版本:http://ip:port/dubboRegistry

      • Spring Boot 2.x版本:http://ip:port/actuator/dubboRegistry

      Dubbo應用遷移2

      參數說明如下。

      • 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