限流策略 令牌桶與漏斗桶的實現

2021-09-08 02:44:11 字數 1683 閱讀 9565

redis 服務端和客戶端的安裝啟動 

# 產看當前redis版本

$ redis-server -v

-bash: /usr/local/bin/redis-server: no such file or directory

$ redis-cli -v

-bash: /usr/local/bin/redis-cli: no such file or directory

# 以上可以判斷本機沒有裝redis

# 開始安裝

$ brew install redis

......

# 產看當前redis版本

$ redis-server -v

redis server v=5.0.3 sha=00000000:0 malloc=libc bits=64 build=457be8ba4fa3e51f

$ redis-cli -v

redis-cli 5.0.3

$ 啟動redis服務端

redis-server

$ 使用redis客戶端連線服務端

redis-cli

redis 自帶的壓力測試工具 

# 壓測需要一段時間因為它需要依次壓測多個命令的結果 如:get.set.incr.lpush等所以我們需要耐心等待

$ redis-benchmark -h 127.0.0.1 -p 6379 -c 50 -n 10000

$ redis-benchmark -c 50 -n 10000

# 如果只需要壓測某個命令,如:get,那麼可以在以上的命令後加乙個引數-t

$ redis-benchmark -c 50 -n 10000 -t get

$ redis-benchmark -c 50 -n 10000 -t set

# 以500個併發傳送二十萬個get請求

$ redis-benchmark -c 500 -n 200000 -t get

# 結果如下

*****= get *****=

# 二十萬個請求在2.89秒內完成

$ 200000 requests completed in 2.89 seconds

$ 500 parallel clients

$ 3 bytes payload

$ keep alive: 1

# x% 的請求在 x毫秒內完成

$ 0.00% <= 2 milliseconds

$ 1.54% <= 3 milliseconds

$ 87.15% <= 4 milliseconds

$ 98.00% <= 5 milliseconds

$ 99.59% <= 6 milliseconds

$ 99.94% <= 7 milliseconds

$ 100.00% <= 7 milliseconds

# 平均每秒傳送69252.08 個請求

$ 69252.08 requests per second

redis 自帶的日誌監控

# redis 實時列印伺服器的操作,日誌監控

$ redis-cli -h 127.0.0.1 -p 6379 monitor

$ redis-cli monitor

令牌桶 漏斗 冷啟動限流在sentinel的應用

分布式系統為了保證系統穩定性,在服務治理的限流中會根據不同場景進行限流操作,常見的限流演算法有 在分析sentinel限流之前,我們先看下sentinel是什麼,官網說明如下 隨著微服務的流行,服務和服務之間的穩定性變得越來越重要。sentinel 是面向分布式服務架構的流量控制項,主要以流量為切入...

redis令牌桶限流

每個ip 1秒內只能傳送一次請求 pom檔案 org.springframework.bootgroupid spring boot starter data redis reactiveartifactid 2.1.3.releaseversion dependency 啟動引導類定義 keyre...

php令牌桶限流

前端每次請求從令牌桶取走令牌,後端勻速向桶內投遞令牌,如果前端取到令牌,則說明這次請求有效,否則讓前端再次請求或者等待。避免了大量請求下伺服器壓力過大導致的崩潰問題。令牌桶演算法 class token catch redi ception exception 令牌初始化 public functi...