本文是根据开涛的博客 聊聊高并发系统之限流特技-2 整理而成,自学笔记第二篇
欢迎访问我的个人博客 http://rayleung.xyz/
目录
1.系统限流实践 - 理论篇
2.系统限流实践 - 应用限流
3.系统限流实践 - 分布式限流
4.系统限流实践 - 接入层限流(上)
5.系统限流实践 - 接入层限流(下*完结)
开篇
上篇学习了通过Nginx模块进行限流的方法(传送门),接下来学习一下利用Nginx+Lua进行接入层限流
Openresty提供了lua-resty-limit-traffic模块进行限流,模块实现了limit.conn和limit.req的功能和算法。参考链接
实践
添加模块
这里使用的是windows的openresty环境,具体安装配置请参考windows版openresty安装或者自行百度
首先需要下载lua-resty-limit-traffic模块
然后把zip包解压出来,进入lib/resty目录下,会看到有一个叫limit文件夹,里面存放的就是我们需要的模块;最后把limit文件夹复制拷贝到openresty根目录下的nginx/resty目录下
resty.limit.req模块
resty.limit.req使用漏桶算法,它与Nginx的标准模块ngx_limit_req类似,不过resty.limit.req使用更灵活,可以在绝大部分的上下文上使用
参考链接
示例
http {
lua_shared_dict my_limit_req_store 100m;
server {
location / {
access_by_lua '
local limit_req = require "resty.limit.req"