OpenResty® 是一個基於 Nginx 與 Lua 的高性能 Web 平臺。咱們知道開發 Nginx 的模塊須要用 C 語言,同時還要熟悉它的源碼,成本和門檻比較高。國人章亦春把 LuaJIT VM 嵌入到了 Nginx 中,使得能夠直接經過 Lua 腳本在 Nginx 上進行編程,同時還提供了大量的類庫(如:lua-resty-mysql lua-resty-redis 等),直接把一個 Nginx 這個 Web Server 擴展成了一個 Web 框架,藉助於 Nginx 的高性能,可以快速地構造出一個足以勝任 10K 乃至 1000K 以上單機併發鏈接的高性能 Web 應用系統。mysql
Nginx 採用的是 master-worker 模型,一個 master 進程管理多個 worker 進程,worker 真正負責對客戶端的請求處理,master 僅負責一些全局初始化,以及對 worker 進行管理。在 OpenResty 中,每一個 worker 中有一個 Lua VM,當一個請求被分配到 worker 時,worker 中的 Lua VM 裏建立一個 coroutine(協程) 來負責處理。協程之間的數據隔離,每一個協程具備獨立的全局變量 _G
。web