一、單機版
1、在本地進程中進行統計,使用常用限流方式
2、Nginx中限流,使用lua腳本統計經過該Nginx的實例和接口量
二、集羣版
A、B、C三個服務端節點組成集羣,需要將某個接口限制TPS最大爲1萬;
使用一個統計監控服務節點(主備方式做高可用),A、B、C三個節點每秒向統計節點發送每次統計結果數據:請求量、正確處理量、每次請求耗時等;
統計監控服務節點每分鐘統計一次,得出每個節點應該分配多少請求量,三個節點每秒從統計節點獲取一次該請求量的值,然後在本地進行單機限流。
1、通過耗時進行分配方案:A平均每次請求耗時10ms、B 50ms、C 100ms;
三個數相加 10+50+100=160;
那麼三個節點獲取到的請求量權重比則爲:
A:160-10=150,範圍爲(0, 150]
B:150+(160-50)=260,範圍爲(150, 260]
C:260+(160-100)=320,範圍爲(260, 320]
從而可以得出每個節點的權重,也就可以得出1萬次請求中,每個節點應該分配多少次,每分鐘更新次結果。
回頭研究下sentinel哨兵框架做限流