服務群組主要用於管理承載業務流量的多個子服務,具有統一的流量入口。系統根據流量分配策略將入口流量分配給各個服務,適用於灰階發布、Auto Scaling和異構資源調度等多種業務情境。本文介紹如何建立服務群組、查看流量入口及修改流量分配策略。
應用情境
灰階發布
將生產服務和灰階服務加入同一分組,灰階服務分配較少的流量。發布新版本時,先更新灰階服務,觀察運行情況。若有問題,復原灰階服務或停止灰階服務並切換流量到生產服務;若正常,則全量更新生產服務,更新後縮容灰階服務至0或保留少量流量。
預付費和後付費Auto Scaling
在同一分組中,預付費服務部署在專屬資源群組,固定執行個體數支撐基本需求;後付費服務部署在公用資源群組,按需Auto Scaling,降低成本。
使用異構硬體資源
在GPU加速情境中,服務部署完成後,部分卡型在某些地區可能會出現停卡或庫存不足的問題,導致服務無法正常擴容。使用服務群組功能在同一服務群組中動態建立不同卡型的服務,適配不同CUDA環境,實現多服務使用異構資源支援同一業務情境。因服務群組的流量入口不變,故前端透明無感知。
建立服務群組
建立服務時,您可以指定服務歸屬於某個服務群組,通過這種方式建立服務群組,並將對應的服務歸納到該服務群組中。
建立服務時,如果指定的服務群組名稱不存在,系統會自動建立該群組;如果存在,則新服務會加入該群組。刪除服務群組中最後一個服務時,服務群組會自動刪除。
下面以建立一個pmml服務群組,並將pmml_prod和pmml_grey兩個服務歸屬到該服務群組為例,樣本如何建立服務群組。
控制台
登入PAI控制台,在頁面上方選擇目標地區,並在右側選擇目標工作空間,然後單擊進入EAS。
在灰階發布頁簽,單擊建立群組與服務。
在自訂部署頁面,配置參數,並單擊部署。
參照步驟2~3,建立服務pmml_grey歸屬於服務群組pmml。
服務建立成功後,您可以在灰階發布頁簽單擊群組名稱pmml進入群組詳情頁面,查看歸屬於該群組的服務列表。

後加入群組的服務預設不承載流量,請參考修改流量分配策略。
EASCMD用戶端
準備服務的設定檔service.json,樣本如下。
其中,group指定服務歸屬於哪個服務群組,即建立的服務群組的名稱。其他參數請參見JSON部署。
建立服務及服務群組。
登入eascmd用戶端後使用
create命令建立服務及服務群組,詳情請參見下載並認證用戶端,使用樣本如下所示。$ eascmd create service.json查看服務及群組詳情。
您可以使用
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服務群組。
TRAFFICSTATE為grouping,表示兩個服務同時承載流量,且兩個服務的流量比例為80%和20%,與執行個體個數相匹配。
查看流量入口
服務群組擁有統一的流量入口,群組中各服務還擁有獨立的流量入口。
服務群組流量入口
<endpoint>/api/predict/<group_name>使用樣本:
http://182848887922****.vpc.cn-shanghai.pai-eas.aliyuncs.com/api/predict/pmml在灰階發布頁簽,查看服務群組流量入口。該入口的流量會根據策略分配到不同服務。服務群組中的服務可以建立或刪除,但入口地址不變,可用於線上調試。

單個服務流量入口
<endpoint>/api/predict/<group_name>.<service_name>使用樣本:
http://182848887922****.vpc.cn-shanghai.pai-eas.aliyuncs.com/api/predict/pmml.pmml_prod在推理服務頁簽,查看單個服務流量入口。該入口與具體服務的生命週期相關聯,流量始終會流入指定的服務。服務刪除後,入口會被銷毀。完成群組切流後,仍需使用該入口地址訪問服務並進行線上調試。

修改流量分配策略
EAS當前支援兩種流量分配方式:
執行個體數分配:流量會根據各服務的推理執行個體數量動態分配。例如,服務A有1個執行個體,服務B有3個執行個體,則A分配25%流量,B分配75%的流量。關閉流量分配功能後,該服務不再參與群組流量分配,但可單獨訪問調用。
自訂權重分配:流量會根據各服務的權重進行加權分配。例如,服務A的流量權重為100,服務B的流量權重為400,則A分配20%流量,B分配80%流量。
無論哪種流量分配方式,服務關閉流量分配功能後,不再參與群組流量分配,但可單獨訪問調用。
具體修改方式如下:
支援通過API調整服務流量權重和流量狀態,詳情請參見ReleaseService - 調整服務流量權重和流量狀態。
按執行個體數分配
控制台
開啟流量分配列開關,表示該服務承接流量;關閉,表示該服務不承接流量。

EASCMD
使用release命令,命令格式如下所示。如何登入eascmd用戶端,請參見下載並認證用戶端。
$ eascmd release <service_name> -s grouping|standalone其中:
<service_name>:服務名稱,需要替換為待修改的服務名稱。
grouping|standalone:修改後的狀態,grouping表示承載流量,standalone表示不承載流量。
使用樣本如下所示:
修改服務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_grey的TRAFFICSTATE已更新為standalone,WEIGHT為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_grey的TRAFFICSTATE已更新為grouping,並按執行個體比例承載了20%的流量。
自訂權重
在流量權重列直接編輯。
