news 2026/7/30 3:44:53

OpenResty为什么选择Lua

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
OpenResty为什么选择Lua

最近研究Kong和apisix,他们2个居然都用OpenResty,于是我决定研究下

什么是 OpenResty ?

openResty是一个基于Nginx与LuaJIT的高性能WEB平台。它在Nginx基础上集成了LuaJIT虚拟机及一系列高质量第三方Nginx模块,让开发者能用 Lua 脚本直接在Nginx 内部编写业务逻辑,把Nginx从单纯的静态反向代理升级为可编译的web应用服务或动态网关。保留了Nginx强大的性能同时又增强了适配业务的灵活性。OpenResty 是一个整合的平台;

下面是OpenResty 和Nginx,Lua 之间的关系;

┌─────────────────────────────────────────────┐ │ OpenResty │ │ ┌─────────────────────────────────────┐ │ │ │ Nginx │ │ │ │ ┌─────────────────────────────┐ │ │ │ │ │ ngx_lua 模块 │ │ │ │ │ │ ┌─────────────────────┐ │ │ │ │ │ │ │ LuaJIT │ │ │ │ │ │ │ │ ┌─────────────┐ │ │ │ │ │ │ │ │ │ Lua代码 │ │ │ │ │ │ │ │ │ └─────────────┘ │ │ │ │ │ │ │ └─────────────────────┘ │ │ │ │ │ └─────────────────────────────┘ │ │ │ └─────────────────────────────────────┘ │ └─────────────────────────────────────────────┘

什么是Lua ?

Lua 是一门轻量级,可嵌入的脚本语言,设计的目的就是-好嵌入到别的程序里当胶水语言。它语法简单,运行快,体积小,在很多软件里都充当内置脚本引擎的角色。

1.极轻量
整个解释器编译完才1-200KB
源码也好集成进C/C++项目,所以很多游戏引擎,嵌入式设备都用它

2.语法简洁但够用,入门门槛低,很容易上手

3.结构简单但灵活
Lua只有一种复合数据结构-table,但它既能当数组用,又能当字典/对象用,非常灵活

4.与C/C++完美融合
Lua 的作者说过一句话:“Lua 不是一个独立的语言,而是一个库。”
Lua的ffi可以直接调用C

5.速度快
虽然是解释语言,但是LuaJIT让热点代码直接编译成本地机器码,性能接近C

为什么偏偏是Lua?

从lua的介绍就能看出来
1.Lua体积小
2.速度快
3.学习成本低
4.与C完美兼容

特性LuaPythonJS/V8GoPHP
极小嵌入体积
原生协程⚠️ async/await 非真协程❌ generator 不等同协程✅ goroutine 但调度独立
C 嵌入友好❌ C API 复杂且GIL受限❌ V8 API 重型且迭代快⚠️ CGO 有调用开销
高性能 JIT✅ LuaJIT⚠️ PyPy 难嵌入生产✅ V8 强但内存占用大✅ 编译为机器码(AOT)
FFI 直接调 C✅ LuaJIT FFI 零开销⚠️ ctypes 慢❌ 无原生FFI⚠️ CGO 跨边界有损耗
热加载package.loaded清除即生效✅ 重载模块可行✅ 模块缓存可清❌ 需重新编译✅ opcache 重置

核心架构

OpenResty 的架构可以分为三层:
1.宿主(host):增强版的Nginx内核,提供基于 epoll/kqueue的事件驱动,非阻塞I/O 模型,以及 Master-worker 进程管理。
2.引擎(Engine): LuaJIT 即时编译器,执行效率极高,提供Lua协程支持,可通过FFI直接调用C函数。
3.桥梁(Bridge):ngx_lua_module,将Lua解释器嵌入Nginx 的worker进程中,允许在不同请求处理阶段注入Lua代码。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/30 3:43:35

STM32 ADC与DMA高效数据采集:原理、配置与实战避坑指南

1. 项目概述:为什么ADCDMA是STM32开发的效率倍增器如果你正在用STM32做数据采集,比如读取传感器电压、电流,或者做音频信号处理,还在用轮询或者中断的方式一个个搬数据,那真的有点“费手”了。我刚开始搞STM32的时候也…

作者头像 李华
网站建设 2026/7/30 3:41:54

Kinect v2与Unity集成:从环境配置到骨骼追踪的完整开发指南

1. 项目概述:从吃灰的体感设备到Unity的交互利器几年前,Kinect v2作为一款革命性的体感设备,曾让无数开发者和玩家为之兴奋。它不仅能捕捉全身骨骼动作,还能识别手势、语音,甚至进行面部表情分析。但随着微软官方逐步停…

作者头像 李华
网站建设 2026/7/30 3:40:37

RLVR(可验证奖励强化学习)深度解析:从 GRPO 到 DAPO 的大模型推理能力训练新范式

RLVR(可验证奖励强化学习)深度解析:从 GRPO 到 DAPO 的大模型推理能力训练新范式 核心痛点:传统 RLHF 依赖人类标注偏好数据成本高昂且难以扩展,而 RLVR 用程序化验证器替代人类标注,让大模型通过自我博弈获得推理能力 适配人群:AI 工程师、大模型训练研究者、对 LLM 推…

作者头像 李华
网站建设 2026/7/30 3:39:23

2026论文分阶段工具排行榜|开题/写作/降重/查重/答辩全覆盖✅

很多人选论文工具翻车,根本原因只有一个:用一个工具搞定全流程,选错阶段直接报废。 有的工具查重强但降重必翻车,有的写作快但AI痕迹爆表,有的润色好但收费巨贵。 写论文五大核心阶段:开题→初稿写作→内…

作者头像 李华
网站建设 2026/7/30 3:38:16

软考高项论文写作全攻略:从理论到实战的45分通关秘籍

1. 项目概述:为什么说论文是软考高项的“生死线”?如果你正在备考信息系统项目管理师(俗称“软考高项”),那你一定听过这句话:“得论文者得天下”。这绝不是危言耸听。作为高级资格认证,高项考试…

作者头像 李华