SpringCloud Alibaba系列(三) Sentinel熱點參數限流

願你生命中有夠多的雲翳,造就一個美好的黃昏 前端

 

歡迎關注公衆號【渣男小四】,一個喜歡技術更喜歡藝術的青年算法



一.介紹編輯器

  熱點即常常訪問的數據。不少時候咱們但願統計某個熱點數據中訪問頻次最高的 Top K 數據,並對其訪問進行限制。好比:測試

    商品 ID 爲參數,統計一段時間內最常購買的商品 ID 並進行限制spa

    用戶 ID 爲參數,針對一段時間內頻繁訪問的用戶 ID 進行限制orm

    熱點參數限流會統計傳入參數中的熱點參數,並根據配置的限流閾值與模式,對包含熱點參數的資源調用進行限流。熱點參數限流能夠看作是一種特殊的流量控制,僅對包含熱點參數的資源調用生效。blog

  Sentinel 利用 LRU 策略統計最近最常訪問的熱點參數,結合令牌桶算法來進行參數級別的流控。索引

 

二.簡單使用接口

  例子:咱們須要對攜帶參數爲h1的請求進行限流,帶有h1參數的是熱點商品,不過過於頻繁的訪問。資源

  代碼

    商品查詢接口

 

  查詢過於頻繁進行限流的兜底方法,兜底方法須要在上面query接口用blockHandler指定,若是query接口沒有用blockHandler指定,則會返回異常界面,對於前端來講不友好

 

  配置熱點key

   資源名爲@SentinelResource(value = "query")中value值參數索引從0開始,若是第一個參數是h1,則遵照響應的熱點規則,單機閾值爲1,表明一秒鐘只能處理一個請求,不然進行限流

 

  測試

  1.一秒鐘只發送一次請求

 

  2.一秒鐘屢次請求

 

  參數例外項

   上面咱們只要帶了h1參數,無論h1的值是什麼,違反了熱點規則,都將會限流,可是有些狀況咱們但願參數的值爲某個值時,限流規則不一樣,也就是說若是h1的值若是爲big,咱們但願他的QPS可以達到200。

  

  配置參數例外項

 

  配置事後,若是h1的值爲big,則QPS就能達到200

 

  注意:@SentinelResource只處理Sentinel控制檯所配置的異常,而不處理程序的內部錯誤狀況,也就是說在Sentinel控制檯配置了相應的規則我才處理,若是程序內部出現了異常狀況,則處理不了。

  如:

  製造程序內部出錯

 

  結果:沒法走熱點規則,而是直接報錯。

相關文章
相關標籤/搜索