1 Star 0 Fork 25

水陌流光 / flowlimit

forked from Kevin6188 / flowlimit 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

#简介

基于OpenResty,本程序即为部署在其上的分流限流控制脚本,基于配置策略进行工作,也可以通过管理URI实时调整配置生效

#包括几个部分

lua_scripts 用于部署到OpenResty的Lua脚本,脚本插入点见nginx/conf/nginx.conf

lualib 用于部署到OpenResty的Lua库脚本,包括实现控制所需要的各种工具lua库文件

nginx/conf/nginx.conf OpenResty的配置文件

lua_ext 安装依赖的扩展,包括uuid_ext,cookie_ext

deps 依赖的第三方库,uuid_ext依赖的uuid库源代码

#安装

1, 安装OpenResty

2, 安装uuid_ext和cookie_ext

3,把lua_scripts,lualib 拷贝到OpenResty安装的根目录下

#配置说明

lualib/ddtk/limit_policy.json 注意:该文件必须对于OpenResty的Worker进程运行用户有写权限。 { "version" : 1472000000, "enable_limit" : true, "personal_key" : "offline", "personal_qps" : 8, "entire_qps" : 50, "entire_bucket": 200, "secret_key" : "abcdefgsalt", "root_secret_key" : "123456789", "max_access_interval_secs" : 3600, "cookie_domain" : ".topdomain.com", "cookie_path" : "/", "deny_url" : "http://192.168.1.110/deny", "login_url" : "http://192.168.1.116/login", "access_token_key_name" : "some_biz_token", "remote_user_type" : 0, "filters_top_logic_op" : "and", "filters" : [ "read_params", "single_qps", "ip_black_list", [ ["entire_qps", "reset_access_token"], ["check_root_token", "check_access_token", "reset_access_token"] ] ], "enable_split" : true, "spliters" : [ "simple" ] }

参数 说明 version 配置的版本号,直接使用1970以来的时间秒值就可以,为了更新生效,必须是递增的 enable_limit 限流开关,true表示打开,false表示关闭 enable_split 分流开关,true表示打开,false表示关闭 personal_key 个人用户标识方式,默认为offline,offline使用可以区分离线用户的方式,ip使用终端IP,token使用登录后的根令牌 personal_qps 单用户QPS entire_qps 全局QPS entire_bucket 超过全局QPS允许的最大突发量 secret_key 访问令牌的加密key,这个值在一个业务集群里保持一致即可 root_secret_key 根令牌的加密key,这个要与登录系统保持一致 max_access_interval_secs 最大的访问间隔时间,单位是秒 cookie_domain 在PC模式下,写Cookie的domain值 cookie_path 在PC模式下,写Cookie的path值 deny_url 在PC模式下,限流的重定向友好页面URL,要求目标URL可以处理URL参数returnurl,这个参数表示重试返回的地址 login_url 在PC模式下,检查无效根令牌的重定向登录URL access_token_key_name 访问令牌的名字 remote_user_type 处理的终端类型 filters_top_logic_op 限流规则表达式的顶级逻辑关系,默认为and filters 限流规则表达式,这里是用递归列表的形式来表达的,逻辑关系是交替变化的,可以通过[]来改变逻辑关系 spliters 分流器列表,如果有一个分流器得到了一个分流目标,则后续的分流器就不会被执行了

#特性

1,分流功能,方便对后端服务器进行线上的AB测试

2,限流功能,基于逻辑表达式方式的定义的过滤器集合,支持复杂的嵌套定义

3,降级功能,对于被限流的请求,如果具备降级配置,则会重定向到降级URL

4,分流限流和其他配置都支持线上直接通过访问控制URL进行修改,实时生效

5,分流器和限流过滤器都支持用户自己的扩展,遵守接口并且放入特定目录即可

#控制URL

1,更新策略 /update_limit_policy
HTTP POST + JSON 比如:关闭分流和限流 Request body::: { "version" : 1472000002, "enable_limit" : false, "enable_split" : false }

2,查询策略 /query_limit_policy HTTP GET

3,更新其他配置 /update_shared_memory HTTP POST + JSON 比如:增加降级配置 Request body::: { "dic_name":"degrade_url_mapping", "operation":"insert", "records" : [ { "key" : "/query/user", "value" : "http://backup.some.com/query/user" }, { "key" : "/query/logo", "value" : "http://backup.some.com/query/logo" } ] }

#联系 堂吉诃德 421093703@qq.com

空文件

简介

用于部署在OpenResty上的分流限流控制脚本,基于配置策略进行工作,可以通过管理URI实时调整配置生效 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/sxl0602/flowlimit.git
git@gitee.com:sxl0602/flowlimit.git
sxl0602
flowlimit
flowlimit
master

搜索帮助

14c37bed 8189591 565d56ea 8189591