全部產品
Search
文件中心

Platform For AI:服務分組

更新時間:Jul 13, 2024

對於多個子服務共同承接業務流量的情境,您可以建立服務分組。服務分組擁有統一的流量入口,系統按照流量分配策略將入口流量分配給每個服務,您也可以指定服務分組中每個服務的流量比例,實現資源有效利用。本文為您介紹如何建立服務分組、查看流量入口及修改流量分配策略。

應用情境

通過服務分組功能,您可以實現以下幾種典型的應用情境:

  • 灰階發布

    將兩個服務加入同一個服務分組,一個服務用做生產,一個服務用作灰階,灰階服務配置較少的執行個體個數,兩個服務承載的流量比例按照服務的執行個體個數進行分配。

    新版本服務發布時,您可以先更新灰階服務,並觀察線上運行情況。如果運行出現問題,可以將灰階服務版本快速復原,您也可以停止灰階服務,並將流量切換到生產服務中;如果灰階服務運行正常,則可以全量更新生產服務,更新完成後將灰階服務縮容至0,也可以保留灰階服務繼續承載線上少部分流量。

  • 藍綠髮布

    將兩個獨立的服務加入同一個服務分組,每個服務承載的流量比例不再按照服務的執行個體個數進行分配,您可以指定每個服務承載的流量比例,比如服務A承載25%的流量,服務B承載75%的流量。

  • 預付費和後付費Auto Scaling

    您可以在同一個服務分組中建立服務,將一個服務部署在預付費專屬資源群組中,並固定服務中的執行個體個數來支撐基本的業務需求;同時在公用資源群組中建立後付費服務,將該服務按照業務屬性配置Auto Scaling,滿足彈性的業務流量,實現公用資源和專屬資源的共用,有效降低成本。

  • 使用異構硬體資源

    在GPU加速情境中,單個服務一般使用一種卡型。服務部署完成後,部分卡型在某些地區可能會出現停卡或庫存不足的問題,導致服務無法正常擴容。您可以通過服務分組功能,在同一個服務分組中使用不同的卡型動態建立新服務。因為不同卡型對CUDA環境有不同程度的依賴,不同服務可以適配不同的卡型,從而實現多個服務使用異構資源支援同一業務的情境。因為服務分組的流量入口不變,後端在分組中建立多少個服務,均可以實現前端透明無感知。

建立服務分組

建立服務時,您可以指定服務歸屬於某個服務分組,通過這種方式建立服務分組,並將對應的服務歸納到該服務分組中。

說明

如果您在建立服務時,指定的服務分組名稱不存在,則系統會自動建立一個服務分組;如果服務分組名稱存在,則新建立的服務會自動加入該服務分組;當服務分組中最後一個服務被刪除時,服務分組會自動刪除。

下面以建立一個pmml服務分組,並將pmml_prodpmml_grey兩個服務歸屬到該服務分組為例,樣本如何建立服務分組。

通過控制台方式建立服務分組

  1. 進入模型線上服務(EAS)頁面。

    1. 登入PAI控制台

    2. 在左側導覽列單擊工作空間列表,在工作空間列表頁面中單擊待操作的工作空間名稱,進入對應的工作空間。

    3. 在工作空間頁面的左側導覽列選擇模型部署 > 模型線上服務(EAS),進入模型線上服務(EAS)頁面。

  2. 服務群組頁簽,單擊建立分組服務

  3. 服務群組頁面,配置參數,並單擊部署

    其中:

    • 服務名稱:參考介面提示資訊配置,樣本值為pmml_prod

    • 所屬群組:選擇建立群組,樣本值為pmml

    其他參數配置,詳情請參見服務部署:控制台

參照步驟2~3,建立服務pmml_grey歸屬於服務群組pmml

服務建立成功後,您可以單擊群組名稱pmml進入群組詳情頁面,查看歸屬於該群組的服務列表。42bcfca1eadb090920de6d591d37fff0.png

通過用戶端方式建立服務分組

  1. 準備服務的設定檔service.json

    • pmml_prod服務的設定檔。

      {
        "name":"pmml_prod",
        "model_path":"http://examplebucket.oss-cn-shanghai.aliyuncs.com/models/lr_xxxx.pmml",
        "processor":"pmml",
        "metadata":{
          "cpu":1,
          "instance":4,
          "group":"pmml",
          "traffic_state": "grouping"
        }
      }
    • pmml_grey服務的設定檔。

      {
        "name":"pmml_grey",
        "model_path":"http://examplebucket.oss-cn-shanghai.aliyuncs.com/models/lr_xxxx.pmml",
        "processor":"pmml",
        "metadata":{
          "cpu":1,
          "instance":1,
          "group":"pmml",
          "traffic_state": "grouping"
        }
      }

    設定檔中的關鍵參數解釋:

    • group:用來指定服務歸屬於哪個服務分組,即建立的服務分組的名稱。

    • traffic_state:用來指定服務在服務分組中是否承載流量,支援配置以下兩個參數:

      • grouping:表示承載服務分組中的流量。

      • standalone:表示不承載服務分組中的流量。

      說明

      如果設定檔中沒有配置traffic_state欄位,表示服務預設承載服務分組的流量。如果您不希望加入服務分組的服務立即承載服務分組的流量,可以將traffic_state欄位配置為standalone

      當服務分組中只有一個服務時,如果該服務的流量狀態為standalone,則系統會自動將該服務的流量狀態設定為grouping。

    設定檔中的其他參數解釋,詳情請參見命令使用說明

  2. 建立服務及服務分組。

    您可以登入eascmd用戶端後使用create命令建立服務及服務分組,如何登入eascmd用戶端,請參見下載並認證用戶端,使用樣本如下所示。

    $ eascmd create service.json
  3. 查看服務及分組詳情。

    您可以使用ls命令查看服務及分組詳情,使用樣本如下所示。

    $ eascmd ls

    系統輸出如下結果。

    [RequestId]: 716BEBFC-E8A4-51FD-A3F7-56376B167923
    +---------------------------+----------+-----+--------+----------------------+----------------------+---------+--------+--------------+---------------------------+
    |        SERVICENAME        | INSTANCE | CPU | MEMORY |      CREATETIME      |      UPDATETIME      | STATUS  | WEIGHT | TRAFFICSTATE |       SERVICEGROUP        |
    +---------------------------+----------+-----+--------+----------------------+----------------------+---------+--------+--------------+---------------------------+
    | pmml_prod                 |        4 |   1 | 1000M  | 2022-06-05T14:30:49Z | 2022-06-05T14:30:49Z | Running |     80 | grouping     | pmml                      |
    | pmml_grey                 |        1 |   1 | 1000M  | 2022-06-05T14:31:38Z | 2022-06-05T14:31:38Z | Running |     20 | grouping     | pmml                      |
    +---------------------------+----------+-----+--------+----------------------+----------------------+---------+--------+--------------+---------------------------+

    其中

    • SERVICEGROUP pmml,表示兩個服務均歸屬於pmml服務分組。

    • TRAFFICSTATEgrouping,表示兩個服務同時承載流量,且兩個服務的流量比例為80%和20%,與執行個體個數相匹配。

後續操作指引:

  • 服務分組及服務建立完成後,您可以查看服務分組或服務的流量入口,用於對外提供服務,詳情請參見查看流量入口

  • 服務分組及服務建立完成後,預設為分組切流方式,根據服務執行個體個數分配流量,支援切換切流方式及修改流量分配策略,詳情請參見修改流量分配策略(分組切流與藍綠切流)

查看流量入口

服務分組擁有統一的流量入口,分組中各服務還擁有獨立的流量入口,說明如下:

  • 服務分組流量入口。

    <endpoint>/api/predict/<group_name>

    使用樣本。

    http://182848887922****.vpc.cn-shanghai.pai-eas.aliyuncs.com/api/predict/pmml

    您可以在控制台頁面,參照下圖操作指引,查看服務群組流量入口。dd92fabdc07f27bb0e8b8d12fb05a19d.png

    從該流量入口進入的流量,會根據不同的流量分配策略分配到服務分組中不同的服務,您可以在服務分組中建立服務或刪除服務,該入口始終保持不變,您可以使用該入口地址進行線上調試。

  • 單個服務流量入口。

    <endpoint>/api/predict/<group_name>.<service_name>

    使用樣本。

    http://182848887922****.vpc.cn-shanghai.pai-eas.aliyuncs.com/api/predict/pmml.pmml_prod

    您可以在控制台頁面,參照下圖操作指引,查看單個服務流量入口。5759b861c52f9631fdf68032af224d62.png

    該入口與具體服務的生命週期相關聯,從該入口進入的流量始終會流入指定的服務中,與流量分配策略無關。相關的服務刪除後,該入口會同時被銷毀。通常在完成分組切流後,您仍需要使用該入口的訪問地址訪問服務並進行線上調試。

修改流量分配策略(分組切流與藍綠切流)

EAS當前支援兩種切流方式:分組切流和藍綠切流,服務建立成功後預設為分組切流,支援將分組切流切換為藍綠切流,且兩種切流方式均支援修改流量分配策略。

分組切流

  • 切流模式介紹

    新建立服務並指定服務分組後,加入服務分組的服務預設為分組切流方式,且直接開始承接服務分組的流量,服務分組按照服務中執行個體的個數來分配流量,因此執行個體數多的服務會分配更多的流量。

  • 修改流量分配策略

    • 通過控制台方式,參照下圖操作指引,修改流量分配策略。fe180b073bad30ff925f018b0660bc73開啟③位置開關,表示該服務承接流量;關閉③位置開關,表示該服務不承接流量。

    • 使用release命令修改流量分配策略,命令格式如下所示。

      $ eascmd release <service_name> -s grouping|standalone

      其中

      • <service_name>:服務名稱,需要替換為待修改的服務名稱。

      • grouping|standalone:修改後的狀態,包括groupingstandalone,分別表示承載流量和不承載流量。

      使用樣本如下所示:

      • 修改服務pmml_grey的狀態為standalone,即不承載流量,可執行如下命令。

        $ eascmd release pmml_grey -s standalone

        系統輸出結果如下。

        Confirmed to release service [pmml_grey] to group traffic [Y/n]yes
        [RequestId]: 40C787DF-8900-5F7A-8A01-30F7D5A8BF3B
        [OK] Service [pmml_grey] has entered the traffic state: standalone

        使用eascmd ls命令查看服務的運行狀態,系統輸出如下結果。

        [RequestId]: 83BE3FBB-8CE2-5008-B435-1938A20B13AA
        +---------------------------+----------+-----+--------+----------------------+----------------------+---------+--------+--------------+---------------------------+
        |        SERVICENAME        | INSTANCE | CPU | MEMORY |      CREATETIME      |      UPDATETIME      | STATUS  | WEIGHT | TRAFFICSTATE |       SERVICEGROUP        |
        +---------------------------+----------+-----+--------+----------------------+----------------------+---------+--------+--------------+---------------------------+
        | pmml_prod                 |        4 |   1 | 1000M  | 2022-06-05T14:30:49Z | 2022-06-05T14:30:49Z | Running |    100 | grouping     | pmml                      |
        | pmml_grey                 |        1 |   1 | 1000M  | 2022-06-05T14:42:41Z | 2022-06-05T14:42:41Z | Running |     0  | standalone   | pmml                      |
        +---------------------------+----------+-----+--------+----------------------+----------------------+---------+--------+--------------+---------------------------+

        其中服務pmml_greyTRAFFICSTATE已更新為standaloneWEIGHT為0,表示全部的流量由pmml_prod承載。

      • 修改服務pmml_grey的狀態為grouping,即服務承載流量,可執行如下命令。

        $ eascmd release pmml_grey -s grouping

        系統輸出結果如下。

        Confirmed to release service [pmml_grey] to group traffic [Y/n]yes
        [RequestId]: 40C787DF-8900-5F7A-8A01-30F7D5A8BF3B
        [OK] Service [pmml_grey] has entered the traffic state: grouping

        使用eascmd ls命令查看服務的運行狀態,系統輸出如下結果。

        [RequestId]: 83BE3FBB-8CE2-5008-B435-1938A20B13AA
        +---------------------------+----------+-----+--------+----------------------+----------------------+---------+--------+--------------+---------------------------+
        |        SERVICENAME        | INSTANCE | CPU | MEMORY |      CREATETIME      |      UPDATETIME      | STATUS  | WEIGHT | TRAFFICSTATE |       SERVICEGROUP        |
        +---------------------------+----------+-----+--------+----------------------+----------------------+---------+--------+--------------+---------------------------+
        | pmml_prod                 |        4 |   1 | 1000M  | 2022-06-05T14:30:49Z | 2022-06-05T14:30:49Z | Running |     80 | grouping     | pmml                      |
        | pmml_grey                 |        1 |   1 | 1000M  | 2022-06-05T14:42:41Z | 2022-06-05T14:42:41Z | Running |     20 | grouping     | pmml                      |
        +---------------------------+----------+-----+--------+----------------------+----------------------+---------+--------+--------------+---------------------------+

        其中服務pmml_greyTRAFFICSTATE已更新為grouping,並按執行個體比例承載了20%的流量。

藍綠切流

  • 切流模式介紹

    藍綠切流功能僅支援一個服務分組中有兩個服務的情境,當使用藍綠切流功能為其中一個服務切流N%的時候,另一個服務的流量比例自動切換為(100-N)%。如果刪除服務分組中的一個服務,流量會全部流入另一個服務中。

  • 修改切流模式

    當服務使用分組切流方式時,支援切換為藍綠切流方式,命令格式如下所示。

    重要

    藍綠切流和分組切流兩種方式互斥,當服務切換為藍綠切流方式後,不再支援使用分組切流方式。

    $ eascmd release <service_name> -w <權重值>

    其中

    • <service_name>:服務名稱,需要替換為待修改的服務名稱。

    • <權重值>:服務的流量權重,取值為[0,100]。

    使用樣本請參見下文的修改流量分配策略。

  • 修改流量分配策略

    您可以通過藍綠切流功能,指定不同服務的流量權重,使用樣本如下所示。

    $ eascmd release pmml_grey -w 27

    系統輸出如下結果。

    Confirmed to release service [pmml_grey] at weight [27%]? [Y/n]yes
    [RequestId]: DD8F8EC2-D726-5E37-9C0B-B360F61C810A
    [OK] Service [pmml_grey] is weighted to 27% now

    使用eascmd ls命令查詢服務的運行狀態,系統輸出如下結果。

    [RequestId]: 51789E0B-88E7-5293-828B-1EFAD2EEA003
    +---------------------------+----------+-----+--------+----------------------+----------------------+---------+--------+--------------+---------------------------+
    |        SERVICENAME        | INSTANCE | CPU | MEMORY |      CREATETIME      |      UPDATETIME      | STATUS  | WEIGHT | TRAFFICSTATE |       SERVICEGROUP        |
    +---------------------------+----------+-----+--------+----------------------+----------------------+---------+--------+--------------+---------------------------+
    | pmml_prod                 |        4 |   1 | 1000M  | 2022-06-05T14:30:49Z | 2022-06-05T14:53:20Z | Running |     73 | blue-green   | pmml                      |
    | pmml_grey                 |        1 |   1 | 1000M  | 2022-06-05T14:50:14Z | 2022-06-05T14:53:20Z | Running |     27 | blue-green   | pmml                      |
    +---------------------------+----------+-----+--------+----------------------+----------------------+---------+--------+--------------+---------------------------+

    其中服務pmml_greyTRAFFICSTATE已更新為blue-green,表示使用藍綠切流方式,WEIGHT27,表示將27%的流量切入pmml_grey服務中。