大促準備(四)限流配置

限流主要是針對非核心服務調用者進行的。

1、確定限流對象

原則上,大促核心鏈路上的服務都要配置限流,以免大促期間的流量超過預估值把服務器壓垮。
同時還要考慮出口限流,主要是對db的限流,配置一個讀寫總流,以避免把服務器壓垮。

2、確定限流實現方式

限流實現方式主要有兩種:

  1. 對Facade包中inteface的方法配置限流
  2. 定義一個專門的service,這個service中的一個方法是就是一個限流內容。需要限流的服務內引入這個service,而後對這個service中的方法配置限流

方法1的好處是簡單,缺點是限流配置可能會分散到多個文件甚至bundle中。
方法2的好處是集中管理,缺點是需要限流的服務要專門引入一個新的serivce,以後每加一個限流內容這個servcie都要進行下修改。

兩種方法各有優劣,各個系統可根據自己的業務特點進行配置。

3、確定限流超量處理策略

限流處理的超量處理總體來說有兩種策略:

  1. 不做處理
  2. 執行指定的動作:拋異常、跳轉到指定頁面、返回json或xml格式的報文

這兩種策略的使用場景主要如下:

  1. 對於供用戶直接訪問的網頁,最好直接跳轉到指定頁面,告知用戶稍後再試;
  2. 對於ajax接口,可以返回json或xml格式的報文,客戶端解析後使得用戶有一個比較好的用戶體驗;
  3. 對於上游弱依賴的服務端服務,可以不做處理;但是對於強依賴的服務,最好拋出異常,而後在自己系統內部catch住該異常,再返回一個默認結果給到上游系統;或者自己系統內部可以有一個稍微複雜的設計,對異常進行統計,大於一定範圍後可以自動進行熔斷。

總體而言,超量之後執行指定動作要好於不做處理。

4、限流驗證

配置完成後,就需要進行驗證了,驗證的方式主要是看日誌,通過日誌看

  1. 限流有沒有生效
  2. 限流生效後有沒有執行指定的動作
  3. 有沒有誤攔

通常而言,我們配置的限流值要比日常的流量值大好幾倍的,正常情況下不會觸發限流的,因而要觸發限流通常有兩種方法:

  1. 在開發或sit環境調小限流值
  2. 在線上或者預發環境進行壓測

5、限流攔截監控

通過查看日誌可以知道單機的限流攔截情況,但是一個系統通過會部署上百臺服務器,如果要了解整個系統的攔截情況,手工一臺臺查看而後相加的方式顯示是不可取的。
在支付寶中強大的xflush,因而可以利用xflush配置對應的監控,通過監控一目瞭然瞭解整個集羣的限流情況,主要是配置三個數據:

  1. 限流總量
  2. 請求總量
  3. 攔截總量

然後把這個數據配置到一張報表中,這樣就可以方便的在一張報表中瞭解系統整體限流情況。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章