如何利用redis來進行分布式集群系統的限流設計


在很多高並發請求的情況下,我們經常需要對系統進行限流,而且需要對應用集群進行全局的限流,那么我們如何類實現呢。

我們可以利用redis的緩存來進行實現,並且結合mysql數據庫一起,先來看一個流程圖。

這個就是一個典型的對http請求進行全局限流的流程圖。

入口通過請求攔截器進行攔截(filter)。

來看代碼片段,這個代碼片段就是一個標准的filter(我們這里基於springboot來定義filter)

我們需要做全局限流時,就需要用到redis了。在redis中,可以將限流配置定義為

redis key:接口名稱(或者url)_limit

 value:map,key:appid(業務id),value:限流大小

就做到配置的快速讀取。

限流的配置定義完后,那么就需要定義限流的計數了。可以定義為

redis key:接口名稱(或者url)_count

 value:map,key:appid(業務id),value:計數值

一個好的限流設計,還需要能做到對限流配置的實時進行更改和動態的配置。那我們就來看如何實現呢

下面就是一個限流配置的新增流程。我們可以將改新增配置定義成一個接口或者頁面上的一個功能。就能做到配置的實時增加。

最后我們再來看下配置的修改和限流配置的刪除

總結:

我們充分利用redis的緩存配置以及做了限流時,盡量不要影響到系統的整體性能。

【原文歸作者所有,歡迎轉載,但是保留版權,並且轉載時,需要注明出處

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM