全部產品
Search
文件中心

Serverless App Engine:開發情境:通過端雲互聯實現開發與測試環境隔離

更新時間:Mar 06, 2025

本文通過類比真實的調用鏈路,為您示範如何自動實現Serverless 應用引擎 SAE(Serverless App Engine)本地開發環境與測試環境的流量隔離,方便您快速開發聯調,提高開發效率。

前提條件

  • 在IntelliJ IDEA中安裝和配置Cloud Toolkit

  • 在應用所在VPC內建立一台可使用SSH登入的ECS,用於建立端雲互聯通道。更多資訊,請參見通過控制台使用ECS執行個體(快捷版)

    重要
    • ECS與應用必須處於同一VPC內。

    • SSH通道需要使用密碼方式登入,暫不支援使用金鑰組登入。

    • 如果作業系統配置代理,可能會導致串連端雲互聯通道失敗。請關閉代理後重試。

背景資訊

以下圖中Spring Cloud架構的微服務應用為例,您無需修改任何業務代碼,只需設定流量標籤(Tag),通過端雲聯調,將流量通過不同的路徑分配到SAE測試環境或本地開發環境,自動實現流量隔離。dg_microservice_network_isolation

步驟一:將應用部署至SAE測試環境

部署Demo應用,分別命名為spring-cloud-zuulspring-cloud-aspring-cloud-bspring-cloud-c。具體操作,請參見將應用的服務註冊與發現中心更改為Nacos

說明

建議使用鏡像方式或JAR包方式部署應用,並配置啟動參數-Dnacos.use.endpoint.parsing.rule=false-Dnacos.use.cloud.namespace.parsing=false才能使用已購買的註冊中心。

步驟二:配置端雲互聯

  1. 啟動IntelliJ IDEA。

  2. 在頂部功能表列,選擇Tools > Alibaba Cloud > Preferences...

  3. Settings對話方塊,選擇Alibaba Cloud Toolkit > Microservice

  4. Microservice頁面,配置端雲互聯的相關參數。

    1. Proxy:購買一台跟SAE應用在同一VPC下的ECS(帶公網IP)作為代理機器,添加至Proxy頁面。

    2. Microservice:在Microservice頁面,配置代理和已購買的MSE註冊中心。

    3. MSE:在MSE頁面,配置相關參數。

      1. 輸入License KeyApp Name

        您可以登入SAE的Webshell,執行以下命令擷取License KeyApp Name。登入Webshell的具體操作,請參見查看Webshell

        env | grep java

        輸出樣本如下:

        JAVA_TOOL_OPTIONS=-javaagent:/home/admin/.opt/ArmsAgent/arms-bootstrap-1.7.0-SNAPSHOT.jar -Darms.licenseKey=iioe7jcnuk@a0bcdaec24f**** -Darms.appId=8641dbc9-8663-4c47-95f7-683fa6dd**** -Darms.agent.env=Serverless -Darms.agent.args=  -Dprofiler.micro.service.canary.enable=true -Dprofiler.micro.service.metadata.report.enable=true -Dprofiler.micro.service.http.server.enable=true -Dmsc.appName=cn-shenzhen-test-sc-gateway-****** -Dmsc.licenseKey=iioe7jcnuk@460d62050fa****
      2. 設定標籤。在Tag欄,輸入local

      3. 下載Agent到本地。

  5. 單擊Apply,然後單擊OK

  6. 啟動本地應用,驗證聯調。

    Info對話方塊如果看到端雲互聯成功啟用的提示,證明端雲互聯功能已生效。

步驟三:發起流量調用進行測試

如果您發往雲原生網關的Request是HTTP請求,您需要在請求的Header中添加x-mse-tag=[local],配置完成後流量會自動在指定的環境內完成閉環。

說明

此處的Key為x-mse-tag是固定值,其參數值需要和環境標籤保持一致。

環境標籤配置完成後,使用curl命令發起流量調用請求,返回結果如下:

  • 主鏈路:

    curl http://47.106.XX.XX:8080/A/a
  • 調用結果:

    A[10.0.1.160] -> B[10.0.1.161] -> C[10.0.1.162]
  • 分支鏈路:

    curl http://47.106.XX.XX:8080/A/a \--header 'x-mse-tag: local'
  • 調用結果:

    A[127.0.0.1] -> B[127.0.0.1] -> C[10.0.1.162]