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模块下,就返回字符串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()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值