前言
在我们的日常开发中, 常用的中间件有很多, 今天来讲一下怎么集成限流中间件, 它可以很好地用限制并发访问数来保护系统服务, 避免系统服务崩溃, 资源占用过大甚至服务器崩溃进而影响到其他应用!
分布式版
简介
redis算法
漏桶算法
即一个水桶, 进水(接受请求)的速率不限, 出水(处理请求)的速率是一定的, 如果出水的速率小于进水的速率, 就会造成水桶溢出(也就是拒绝请求);
主要是从出口限制, 以固定的速率控制访问速度, 缺点是难以应对突发请求;
依赖库
实现
/v1/hello注意
key单机版
简介
这个就只适用于单个服务进程的限流, 比如个人搭的一些小网站之类的;
算法
即也是一个桶, 按照设定的速率往桶里放令牌, 10s二十次即1s放两个令牌(允许处理两次请求), 然后请求来之后必须从桶里取出来令牌才可以进行处理, 没有令牌则选择拒绝或等待;
主要是从入口限制, 允许一定量的突发请求(即桶内所有的令牌);
依赖库
实现
/v1/hello结语
上面的代码均摘自我开发的一个开源项目中, 主要是一个Go的标准项目布局, 封装了一些常用的组件, 有兴趣的朋友可以了解一下, 新手极易上手;