高性能网关基石——OpenResty
什么是 OpenResty OpenResty 一个基于 Nginx 的高性能 Web 平台,能够方便地搭建处理超高并发的动态 Web 应用、 Web 服务和动态网关。例如有名的 Kong 网关和国产新秀 ApiSIX 网关都是基于 OpenResty 来进行打造的。 OpenResty 通过实现 ngx_lua 和 stream_lua 等 Nginx 模块,把 Lua/LuaJIT 完美地整合进了 Nginx,从而让我们能够在 Nginx 内部里嵌入 Lua 脚本,用 Lua 语言来实现复杂的 HTTP/TCP/UDP 业务逻辑,同时依然保持着高度的并发服务能力。 处理阶段 一个正常的 Web 服务的生命周期可以分成三个阶段: initing:服务启动,读取配置文件,初始化内部数据结构 running:服务运行,接受客户端的请求,返回响应结果 exiting:服务停止,做一些必要的清理工作,如关闭监听端口 OpenResty 主要关注的是 initing 和 running 这两个阶段,并做了更细致的划分 OpenResty 的 initing 阶段 configuration:读取配置文件,解析配置指令,设置运行参数 master-initing:配置文件解析完毕,master 进程初始化公用的数据 worker-initing:worker 进程初始化自己专用的数据 OpenResty 的 running 阶段 在 running 阶段,收到客户端的请求后,OpenResty 对每个请求都会使用下面这条流水线进行处理: ssl:SSL/TLS 安全通信和验证 preread: 在正式处理之前预读数据,接收 HTTP 请求头 rewrite:检查、改写 URI ,实现跳转重定向 access:访问权限控制 content:产生响应内容 filter:对 content 阶段产生的内容进行过滤加工处理 log: 请求处理完毕,记录日志,或者其他的收尾工作。 OpenResty 执行程序 OpenResty 根据上面的处理阶段提供了一些指令,在开发时使用它们就可以在这些阶段里面插入 Lua 代码,执行业务逻辑:
…