為應用配置熱點規則後,MSE將分析統計參數,即資源調用過程中的調用次數較高的參數,並根據配置的熱點規則對包含熱點參數的資源調用進行限流,保護系統穩定性。本文介紹如何為應用配置熱點規則。
背景資訊
熱點即經常被訪問的資料。例如在以下情境中需要統計某個熱點資料中訪問頻次最高的Top資料,並對其訪問進行限制。
針對一段時間內最頻繁購買的商品ID進行限制,防止擊穿緩衝而導致大量請求到資料庫的情形。
針對一段時間內頻繁訪問的使用者ID進行限制,防止惡意刷單。
MSE利用LRU(Least Recently Used)策略統計最近最常訪問的熱點參數,結合令牌桶演算法來進行參數層級的流控。
功能入口
登入MSE治理中心控制台,並在頂部功能表列選擇地區。
在左側導覽列,選擇治理中心 > 应用治理。
在应用列表頁面,單擊目標應用的資源卡片。
進入應用之後,選擇以下任意一種方式建立流控規則,目前支援 RPC 介面和自訂埋點介面:
方式一:在介面詳情裡為介面添加規則
RPC 介面:在左側導覽列,選擇接口详情。單擊RPC服务頁簽,選擇介面。在右側單擊热点参数防护(RPC)頁簽,然後單擊新增热点参数防护(RPC)规则。
自訂介面:在左側導覽列,選擇接口详情。單擊自定义接口頁簽,選擇介面。在右側單擊热点参数防护頁簽,然後單擊新增热点参数防护(自定义接口)规则。
方式二:在流量防護頁簽為介面添加規則。
在左側導覽列,選擇流量治理 > 流量防护頁簽,單擊热点参数防护(RPC/自定义接口)頁簽,然後單擊新增热点参数防护(RPC/自定义接口)規則。
在新增热点参数防护(RPC/自定义接口)對話方塊中配置規則資訊。單擊新增。
參數說明,請參見配置項說明。
樣本情境一:秒殺情境
秒殺等搶購商品的時候,由於流量較大會導致系統響應不及時,甚至系統崩潰。為保證系統的穩定性,可配置熱點規則,超過一定量的閾值後,系統會讓購買熱點商品的流量排隊等待。
例如購買同一商品,1s內調用超過100次請求後,則其餘請求進行等待。在新增热点参数防护(RPC/自定义接口)對話方塊中配置以下規則資訊。
填寫接口名称。
參數位置索引填寫埋點傳入參數的索引位置,從 0 開始,其對應著實際的 RPC 或者自訂埋點方法中的參數列表中的索引位置。
例如 RPC 方法
com.aliyun.demo:methodA(param0, param1, ……),參數位置 0 是 param0 這個參數;自訂埋點方法SphU.entry("demoResource",EntryType.IN, 1, param0, param1, ……),參數位置 0 是 param0 這個參數。统计维度選擇通过请求数。
统计周期时间設定為1s,单机阈值設定為100。
流控效果選擇排队等待。
超时时间設定為30ms。
1s內調用此介面超過100次,多餘的請求要進行排隊等待,等待時間長度超過30ms的請求就會立即失敗。
樣本情境二:調用請求頻繁,佔用較多系統資源
在秒殺情境下,有時候還需要修改下單地址,當調用修改請求較多時,會佔用寫資料庫較多資源,您可以對其進行熱點快速失敗的處理,稍後再修改。在新增热点参数防护(RPC/自定义接口)對話方塊中配置以下規則資訊。
填寫接口名称。
參數位置索引填寫埋點傳入參數的索引位置,從 0 開始,其對應著實際的 RPC 或者自訂埋點方法中的參數列表中的索引位置。
例如 RPC 方法
com.aliyun.demo:methodA(param0, param1, ……),參數位置 0 是 param0 這個參數;自訂埋點方法SphU.entry("demoResource",EntryType.IN, 1, param0, param1, ……),參數位置 0 是 param0 這個參數。统计维度選擇并发数。
统计周期时间設定為1s,单机阈值設定為100。
流控效果選擇快速失败。
表示1s內只能最多處理100個並發請求,其餘超出的請求都會快速失敗。
配置項說明
新增热点参数防护(RPC/自定义接口)對話方塊配置項說明如下。
參數 | 描述 |
接口名称 | 適用該規則的資源名稱,與埋點傳入的資源名保持一致。 |
参数位置索引 | 埋點傳入參數的索引位置,從 0 開始,其對應著實際的 RPC 或者自訂埋點方法中的參數列表中的索引位置。例如 RPC 方法 |
统计维度 | 可選擇通過請求數或並發線程數。
|
统计周期时间 | 統計視窗時間長度(單位為秒)。例如統計視窗時間長度為10s,QPS閾值為5代表限制10s內每個熱點參數訪問不超過5次。 |
单机阈值 | 作用於每個熱點參數的閾值。 |
流控效果 | 當统计维度為通过请求数時,可以選擇流控效果來處理被攔截的流量。
|