代码拉取完成,页面将自动刷新
可以动态修改分配规则的Nginx灰度发布模块,完全使用C语言实现,提供Restful风格的API,几乎不影响Nginx性能。
Tengine 2.2.0和Nginx 1.10.2上编译测试通过。
1 dyabt_interface
配置于location块内,作为一个Handler提供Restful API同时也是该模块的开关指令,不配置该指令模块运行于disable模式,所有dyabt_set指令返回0。
2 dyabt_set <var> <domain>
配置于location块内,使用domain对应的规则解析当前请求并将结果存到var变量内。
events {
}
http {
server {
listen 4000;
location / {
dyabt_set $ab $host;
return 200 $ab.$host;
}
}
server {
listen 4032;
location / {
dyabt_interface;
}
}
}
$ab
变量。$ab.$host
响应,实际使用中这里一般为proxy_pass。POST /testings
xausky.example.org,header_x_uid
0,10
11,100
101,99999999
200 OK
success
GET /testings[/<domain>]
200 OK
init.example.org,header_x_uid
0,10
11,100
101,99999999
---
xausky.example.org,header_x_uid
0,10
11,100
101,99999999
---
<...>
DELETE /testings/<domain>
200 OK
success
typedef long long (*ngx_http_dyabt_parser_ptr_t)(ngx_http_request_t *r);
接口ngx_http_dyabt_init_process
函数内注册,例如:parser = ngx_array_push(&parsers);
ngx_str_set(&parser->key,"header_x_uid");
parser->key_hash = ngx_hash_key(parser->key.data,parser->key.len);
parser->value = ngx_http_dyabt_uid_parser;
系统:Linux Kernel 4.8.10
线程数: 200
服务器: Tengine 2.2.0
处理器: Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz
Tengine 原生转发:
Tengine 使用本模块转发:
Tengine 使用本模块同时每秒更新一次规则:
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型