OpenResty XRay 訂閱下的私有庫和模組

OpenResty XRay 訂閱下的私有庫和模組的介紹

lua-resty-tls-session

lua-resty-tls-session 是一個用於 TLS session ticket keys 輪轉的 Lua 庫。

Nginx 配置檔案中的 TLS session ticket key 是用於生成 TLS session ticket 的。 客戶端使用 session ticket 就可以恢復之前和服務端的會話而不需要重新進行握手, 但這個 ticket key 長期不更換並且洩漏的話則存在安全問題。 如果定期更換配置檔案中的 ticket keys 並重啟 Nginx 程序能夠滿足安全需求。但是這種方式 對於運維非常麻煩,並且重啟會造成短暫的業務中斷,對於 SLA 等級高的業務是不可接受的。

另外,對於叢集的多個 Nginx 伺服器,要求配置相同的 ticket key,否則客戶端請求在不同的伺服器間切換 會導致伺服器無法解密 session ticket,進而無法實現會話恢復。這種情況下需要進行全新的 SSL/TLS 握手, 會有非常高的額外的 CPU 開銷。

使用 lua-resty-tls-session 庫,就可以透過指定 keys_fetcher 的方式定時獲取最新的 key 來動態更新 Nginx 內的 key,淘汰之前已經過期的 key ,也無需重啟 Nginx 程序。

我們也提供了一個內建的 redis_fetcher,只要叢集內使用的是相同的 redis_fetcher 配置,叢集就可以共享這些 ticket key, 客戶端使用有效的 session ticket 和叢集內的服務端都可以恢復會話,提高了客戶端和服務端的會話複用率。

lua-resty-jsonb

lua-resty-jsonb 是用來代替 lua-cjson 的一個操作和儲存 JSON 資料的解決方案。它透過避免序列化和反序列化操作來極大的減少 GC 物件的建立,同時又無須對已有的資料結構進行改變。

因為 lua-resty-jsonb 不需要進行反序列化即可查詢 JSON 資料,所以在需要頻繁進行反序列化或者只查詢一個大的物件中的少數子物件時特別適合使用 lua-resty-jsonb 來替換 lua-cjson。

比如可以在控制面的機器上生成 JSONB 物件,將該 JSONB 物件分發到資料面的所有機器上。 資料面機器就可以實現不需要反序列化就查詢 JSONB 裡面的資料。

lua-cjson-plus

因為 JSON 訊息格式簡單易讀,因此經常使用 JSON 來進行訊息交換,儲存配置等。在實際業務中經常會有大量的 JSON 物件的編解碼需要,這些操作會消耗大量的 CPU 資源。

lua-cjson 這個 JSON 編解碼庫在 OpenResty 服務中有著非常廣泛的應用。因此 OpenResty Inc. 對 lua-cjson 軟體進行全面的最佳化, 提升了 JSON 資料的編解碼效率。

在很多情況下, 效能最高可達開源庫的 4 倍。

該庫的安裝和使用說明可參考此文件

lua-resty-http-plus

OpenResty Inc. 對該庫進行了大量的最佳化,降低了該庫的記憶體和 CPU 開銷。 同時,相關的介面和開源版本是一致的,可以實現對開源庫的平移替換。

有些業務需要大量使用 lua-resty-http 來傳送 HTTP 請求, 使用該庫可以提升 OpenResty 應用的整體效率。

luajit-plus

luajit-plus 是 OpenResty Inc. 最佳化過的 LuaJIT 引擎。

該軟體具有如下特性

  1. 相比開源 LuaJIT, 在一些應用場景下,luajit-plus 私有庫的表操作效能提升可達上千倍。
  2. luajit-plus 私有庫還提供了更多的運算子號, 比如 +=, -=, %= 等。
  3. 支援表示式級別的 do end 語句。

該庫的安裝和使用說明可參考此文件

lua-resty-redis-fast

該軟體是 OpenResty Inc. 基於 C 協程實現的高效能 Redis 客戶端庫。該庫的介面和開源的 lua-resty-redis 保持一致,可以實現快速的替換。

相比 lua-resty-redis,該庫的效能更高,記憶體開銷更少。在一些情況下,效能最高可達開源庫的 2.5 倍。

lua-resty-redis-cluster-fast

該軟體是 OpenResty Inc. 基於 C 協程實現的高效能 Redis 客戶端庫。相比 lua-resty-redis-fast 增加了對 Redis 叢集的支援。該庫的安裝和使用說明可參考此文件

lua-resty-mysql-fast

該軟體是 OpenResty Inc. 基於 C 協程實現的高效能 mysql 客戶端庫。該庫的介面和開源的 lua-resty-mysql 保持一致,可以實現快速的替換。

相比 lua-resty-mysql,該庫的效能更高,記憶體開銷更少。

lua-resty-memcached-fast

該軟體是 OpenResty Inc. 基於 C 協程實現的高效能 memcached 客戶端庫。該庫的介面和開源的 lua-resty-memcached 保持一致,可以實現快速的替換。

相比 lua-resty-memcached,該庫的效能更高,記憶體開銷更少。

lua-resty-dymetrics

開源的 nginx-module-vts 等指標統計模組在多 worker 的情況下效能會嚴重下降,進而影響到業務,因此不適合高流量的生產環境使用。

OpenResty Inc. 基於無鎖技術實現的高效能的指標統計模組可以將指標結果輸出為 JSON 格式或者 Prometheus 格式, 適合對接各種原有的採集系統。在高流量的情況下,該模組也有十分優異的效能。該庫的安裝和使用說明可參考此文件