限流的概念
限流是對使用者的請求進行限制來保護系統。
常見的限流有以下幾種:
限制總併發數
限制時間視窗的平均速率
限制介面的呼叫速率
···
限流演算法有令牌桶法和漏桶法。
令牌桶演算法是一個存放固定容量令牌的桶,按照固定速率往桶裡新增令牌。
令牌桶演算法的描述如下:
假設限制一秒兩個令牌,則按照500毫秒的固定速率往桶中新增令牌;
桶中最多存放b個令牌,當桶滿時,新新增的令牌被丟棄或拒絕;
當一個n個位元組大小的資料包到達,將從桶中刪除n個令牌,接著資料包被髮送到網路上;
如果桶中的令牌不足n個,則不會刪除令牌,且該資料包將被限流(要麼丟棄,要麼緩衝區等待)。
漏桶作為計量工具時,可以用於流量整形和流量控制。
漏桶演算法的描述如下:
一個固定容量的漏桶,按照常量固定速率流出水滴;
如果桶是空的,則不需流出水滴;
可以以任意速率流入水滴到漏桶;
如果流入水滴超出了桶的容量,則流入的水滴溢位了(被丟棄),而漏桶容量是不變的。
相關文章
- 來談談限流-從概念到實現
- 微服務 - 概念 · 應用 · 通訊 · 授權 · 跨域 · 限流微服務跨域
- 限流場景&限流方案的一些思考
- Nginx限流Nginx
- 面試官說:來談談限流-從概念到實現,一問你就懵逼了?面試
- 單機限流和分散式應用限流分散式
- apisix~限流外掛的使用API
- Nginx分片限流Nginx
- 服務限流
- .Net Core:限流
- Nginx限流特技Nginx
- Guava RateLimiter限流GuavaMIT
- 分散式限流分散式
- 簡單的限流過濾器過濾器
- 我是如何實現限流的?
- 基於kubernetes的分散式限流分散式
- 關於限流實現的思考
- RabbitMQ 消費端的限流策略MQ
- 高可用之限流-03-Semaphore 訊號量做限流
- 分享個自己封裝的限流trait封裝AI
- 限流 SDK 的設計與實現
- Golang 限流器的使用和實現Golang
- 分享一個簡單的redis限流Redis
- Java Redis多限流JavaRedis
- 限流常見方案
- Redis 應用-限流Redis
- nginx 限流配置Nginx
- 淺談Api限流API
- AspNetCore新增API限流NetCoreAPI
- 組的概念
- Dart的混入概念和Vue3的混入概念DartVue
- 一個比較麻煩的限流需求
- Sentinel實現限流,竟是如此的簡單!
- 限流原理解讀之guava中的RateLimiterGuavaMIT
- 常用限流演算法演算法
- nginx做限流設定Nginx
- Sentinel 實戰-限流篇
- 使用Redis進行限流Redis