01 2023 档案
摘要:背景 为网关提供健康检查功能时需要对节点发送http或者tcp探活请求。Openresty 提供cosocket来处理非阻塞IO。 实现 跟工程结合在一起,这里简单拼接数据结构 local function __default_check_alive(status) return status >=
阅读全文
摘要:背景 在程序开发过程中有时会遇到事件流的问题,某一个结果会触发A、B、C等一系列动作。需要将各种事件注册给委托类(Delegate)。Delegate类会依次触发注册的函数,完成相应的动作。 实现原理 lua中可以使用元表和队列的形式进行实现 实现细节 delegate.lua local _M =
阅读全文
摘要:背景 静态的nginx配置需要将负载均衡的服务节点信息都配置在配置文件中。现在微服务或云服务都会接入一些服务发现或者云控平台场景,经常需要更换节点,如果每次都要更新配置并且重启服务是无法接受的,所以需要网关提供动态扩展,实时更新自己负载均衡节点的能力,使用openresty网关需要使用lua扩展来实
阅读全文
摘要:背景 在go的工程中,有时init的顺序是至关重要的,本文写了一个小控制器去管理init的顺序,可以根据自己的要求设置不同的权重来实现加载顺序。 本文控制器主要实现两个功能,一是按照优先级加载包的引用,二是流程控制,主流程与异步流程存在顺序要求(实现类似sync.WaitGroup功能) 原理 优先
阅读全文