APISIX源码解析-执行阶段【stream_init_worker】
APISIX源码解析-执行阶段【stream_init_worker】ngx_lua 模块执行顺序与阶段stream_init_worker()1、插件初始化function _M.init_worker()-- some plugins need to be initialized in init* phases--获取当前请求的Nginx子环境(http或stream)。如果在http模块下,
·
APISIX源码解析-执行阶段【stream_init_worker】
ngx_lua 模块执行顺序与阶段
stream_init_worker()
1、插件初始化
function _M.init_worker()
-- some plugins need to be initialized in init* phases
-- 获取当前请求的Nginx子环境(http或stream)。如果在http模块下,就返回字符串http;如果在stream模块下,则返回字符串stream。
if ngx.config.subsystem == "http" then
-- 初始化prometheus.exporter
require("apisix.plugins.prometheus.exporter").init()
end
-- load(http_plugin_names) and load_stream(stream_plugin_names)
-- 过程都一样,先清理内存,再插入,再按优先级排序
_M.load()
if local_conf and not local_conf.apisix.enable_admin then
init_plugins_syncer()
end
local plugin_metadatas, err = core.config.new("/plugin_metadata",
{automatic = true}
)
if not plugin_metadatas then
error("failed to create etcd instance for fetching /plugin_metadatas : "
.. err)
end
_M.plugin_metadatas = plugin_metadatas
end
2、stream初始化
function _M.stream_init_worker()
local router_ssl_name = "radixtree_sni"
-- stream route只包含ip、port
local router_stream = require("apisix.stream.router.ip_port")
router_stream.stream_init_worker(filter)
_M.router_stream = router_stream
local router_ssl = require("apisix.ssl.router." .. router_ssl_name)
router_ssl.init_worker()
_M.router_ssl = router_ssl
end
初始化/stream_routes 和 ssl
3、开启定时器,每秒
-- 如果使用yaml配置中心,开启定时器定时扫描配置文件
if core.config == require("apisix.core.config_yaml") then
core.config.init_worker()
end
4、初始化变量
-- 初始化balancer
load_balancer = require("apisix.balancer")
-- 初始化本地配置变量
local_conf = core.config.local_conf()

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)