init_by_lua*
发生在master进程启动阶段。这里会对数据访问层进行初始化,加载插件的代码,构造路由规则表。
init_worker_by_lua*
发生在worker进程启动阶段。这里会开启数据同步机制,执行每个插件的init_worker方法。
balancer.init() 读取数据库UPSTREAM表,初始化负载均衡器(给每个均衡器加载TARGET【读取TARGET表】),给每个负载均衡器配备一个健康检查器
构造完健康检查器后,调用populate_healthchecker方法把负载均衡器中节点添加到健康检查器中。
然后调用attach_healthchecker_to_balancer监听健康检查器的事件:healthchecker.events.healthy和healthchecker.events.unhealthy,并设置回调方法。
回调方法就是根据健康检查器的事件类型,在负载均衡器中把后端节点标记为可用或不可用
set_by_lua*
处理请求第一个执行阶段。这里可以做一些流程分支处理判断变量初始化。kong没有使用该阶段。
rewrite_by_lua*
这里可以对请求做一些修改。kong在这里会把处理代理给插件的rewrite方法。
access_by_lua*
kong在这里对请求进行路由匹配,找到后端的upstream服务的节点。
规则的匹配在kong.access方法里面,调用router.exec方法进行匹配
balancer_by_lua*
kong在这里会把上一阶段找到的服务节点设置给nginx的load balancer。如果设置了重试次数,此阶段可能会被执行多次。
header_filter_by_lua*
这里可以对响应头做一些处理。kong在这里会把处理代理给插件的header_filter方法。
body_filter_by_lua*
这里可以对响应体做一些处理。kong在这里会把处理代理给插件的body_filter方法。
log_by_lua*
kong在这里会通过插件异步记录日志和一些metrics数据。
————————————————
版权声明:本文为CSDN博主「aa1215018028」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/aa1215018028/article/details/81297724