大促準備(四)限流配置

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

一、肯定限流對象

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

二、肯定限流實現方式

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

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

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

兩種方法各有優劣,各個系統可根據本身的業務特色進行配置。日誌

三、肯定限流超量處理策略

限流處理的超量處理整體來講有兩種策略:xml

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

這兩種策略的使用場景主要以下:對象

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

整體而言,超量以後執行指定動做要好於不作處理。接口

四、限流驗證

配置完成後,就須要進行驗證了,驗證的方式主要是看日誌,經過日誌看支付寶

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

一般而言,咱們配置的限流值要比平常的流量值大好幾倍的,正常狀況下不會觸發限流的,於是要觸發限流一般有兩種方法:ci

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

五、限流攔截監控

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

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

而後把這個數據配置到一張報表中,這樣就能夠方便的在一張報表中瞭解系統總體限流狀況。

相關文章
相關標籤/搜索