限流的概念
2018-09-30 本文已影响24人
昙花未现
限流是对用户的请求进行限制来保护系统。
常见的限流有以下几种:
限制总并发数
限制时间窗口的平均速率
限制接口的调用速率
···
限流算法有令牌桶法和漏桶法。
令牌桶算法是一个存放固定容量令牌的桶,按照固定速率往桶里添加令牌。
令牌桶算法的描述如下:
假设限制一秒两个令牌,则按照500毫秒的固定速率往桶中添加令牌;
桶中最多存放b个令牌,当桶满时,新添加的令牌被丢弃或拒绝;
当一个n个字节大小的数据包到达,将从桶中删除n个令牌,接着数据包被发送到网络上;
如果桶中的令牌不足n个,则不会删除令牌,且该数据包将被限流(要么丢弃,要么缓冲区等待)。
漏桶作为计量工具时,可以用于流量整形和流量控制。
漏桶算法的描述如下:
一个固定容量的漏桶,按照常量固定速率流出水滴;
如果桶是空的,则不需流出水滴;
可以以任意速率流入水滴到漏桶;
如果流入水滴超出了桶的容量,则流入的水滴溢出了(被丢弃),而漏桶容量是不变的。