OpenResty 私有庫:高效能 Lua 與 Nginx 模組
OpenResty 私有庫是由 OpenResty Inc. 構建和維護的商業級、生產就緒的 Lua 庫和 Nginx 模組。其中多個庫是知名開源元件——lua-resty-redis、lua-resty-http、lua-cjson,乃至 LuaJIT 本身——的即插即用替換或深度增強版本,採用純 C 核心實現,提供更高的吞吐量、可預測的資源消耗,以及商業支援。
完整目錄
| 庫 | 功能 | 對應的開源元件 | 瞭解更多 |
|---|---|---|---|
| luajit-plus | 最佳化版 LuaJIT 引擎:在分配器層面主動回收 RSS 記憶體,table 操作加速(某些場景下快數千倍),額外的語言便利特性 | LuaJIT | 部落格 · 文件 |
| jit.cjson(隨 luajit-plus 一同分發) | JSON 編碼速度最高 18 倍、解碼速度最高 6 倍於開源 Lua-cjson 模組;支援 JSON 註釋和尾部逗號 | lua-cjson | 部落格 · 手冊 |
| lua-resty-jsonb | 以二進位制 JSONB 形式操作和儲存 JSON 資料,避免序列化/反序列化,減少 GC 物件 | lua-cjson(替代方案) | 文件 |
| lua-resty-tls-session | 叢集範圍的 TLS 會話票據金鑰同步與零停機輪換——無需 nginx -s reload | —(填補了原生 Nginx TLS 操作中的空白) | 部落格 · 文件 |
| lua-resty-http-fast | 高效能 HTTP 客戶端,純 C 核心,100% 非阻塞 I/O,介面與開源 lua-resty-http 保持一致 | lua-resty-http | 文件 |
| lua-resty-kafka-fast | 由 librdkafka 驅動的 Kafka 生產者/消費者,在專用執行單元中執行;批次寫入可達每核 250,000 條/秒 | lua-resty-kafka | 部落格 · 手冊 |
| lua-resty-redis-fast | 純 C 核心的 Redis 客戶端——效能最高可達開源 lua-resty-redis 的 2.5 倍 | lua-resty-redis | 文件 |
| lua-resty-redis-cluster-fast | 在同一 C 核心 cosocket 基礎上增加 Redis Cluster 支援 | lua-resty-redis(叢集模式) | 文件 |
| lua-resty-mysql-fast | 高效能 MySQL 客戶端,純 C 核心,100% 非阻塞 I/O | — | 文件 |
| lua-resty-memcached-fast | 高效能 memcached 客戶端,純 C 核心,100% 非阻塞 I/O | — | 文件 |
| lua-resty-dymetrics | 無鎖高效能指標採集,支援 JSON 或 Prometheus 輸出 | — | 文件 |
| lua-resty-limit-traffic-dynamic | 動態 HTTP 請求限速,將 CPU 利用率保持在指定目標範圍內 | — | 文件 |
| lua-io-nginx-module-plus | 非阻塞檔案讀寫,比開源版本更穩定 | lua-io-nginx-module | 文件 |
| openresty-minifiers | 流式 JS/CSS/HTML 壓縮,作為 Nginx 輸出過濾器執行——每核 120+ MB/s,O(1) 記憶體 | — | 部落格 · 文件 |
| dubbo-nginx-module-plus | 深度最佳化的 Dubbo 閘道器模組,穩定性和效能均優於開源版本 | dubbo-nginx-module | 文件 |
| zstd-nginx-module-plus | Zstandard (zstd) 壓縮——效能比 gzip 壓縮高 2–5 倍——修復了開源版本的 bug,並提供 Lua 介面實現動態控制 | zstd-nginx-module | 文件 |
按場景分類
資料庫和快取客戶端。 lua-resty-redis-fast、lua-resty-redis-cluster-fast、lua-resty-mysql-fast 和 lua-resty-memcached-fast 採用相同的設計理念:以純 C 核心和 100% 非阻塞 I/O 重新實現的高效能客戶端。
HTTP 和訊息佇列。 lua-resty-http-fast 保持與開源 lua-resty-http 一致的介面;lua-resty-kafka-fast 將 Kafka 寫入完全移出請求路徑;dubbo-nginx-module-plus 服務於 Dubbo 閘道器部署。
JSON 和資料處理。 jit.cjson 是 lua-cjson 的即插即用替換——無需修改程式碼;lua-resty-jsonb 更進一步,透過對二進位制 JSONB 直接操作來完全避免序列化。
內容和壓縮。 openresty-minifiers 在閘道器層對 JS/CSS/HTML 進行即時壓縮,適用於無法修改上游構建流程的場景;zstd-nginx-module-plus 為 Nginx 帶來了生產級的 Zstandard 壓縮能力。
流量控制和可觀測性。 lua-resty-limit-traffic-dynamic 根據 CPU 利用率目標動態調整限速;lua-resty-dymetrics 以無鎖方式採集指標,支援匯出 JSON 或 Prometheus 格式。
TLS 和執行時。 lua-resty-tls-session 使 TLS 會話恢復在負載均衡叢集中可靠執行,並支援零停機金鑰輪換;luajit-plus 替換 LuaJIT 執行時,從根本上解決 RSS 膨脹和 OOM Kill 問題;lua-io-nginx-module-plus 在不阻塞事件迴圈的前提下處理檔案 I/O。
許可方式
這些庫是由 OpenResty Inc.——即 OpenResty 本身的建立者和維護者——構建的專有軟體。透過標準包管理器(apt、yum)以私有包的形式分發,使用訂閱 token 進行認證,並持續接收更新和安全修復。如需評估、瞭解定價或部署指導,請訪問產品頁面或聯絡我們的工程團隊。
常見問題
問:OpenResty 私有庫是開源的嗎? 答:不是。它們是由 OpenResty Inc. 構建的商業專有庫。其中許多是對流行開源元件(lua-resty-redis、lua-resty-http、lua-cjson、LuaJIT)的增強或替換。
問:使用它們需要修改程式碼嗎?
答:取決於具體的庫。有幾個是即插即用的:jit.cjson 不影響已有的 require "cjson" 呼叫,luajit-plus 替換執行時無需任何程式碼修改,openresty-minifiers 僅需配置即可啟用。而客戶端庫(如 lua-resty-kafka-fast)則提供了自己的(刻意精簡的)API。
問:如何安裝它們?
答:透過您常用的包管理器(apt-get install / yum install),從 OpenResty Inc. 的私有包倉庫安裝,使用您的訂閱令牌進行認證。各庫的具體安裝說明請參閱官方文件。












