1. 程式人生 > >應用軟體>程式設計師必備知識(三)

應用軟體>程式設計師必備知識(三)

應用軟體>程式設計師必備知識(三)

結合上一篇文章,我們選好了一款產品做我們的外網伺服器,那麼接下來,如果想依據成熟技術構建一個屬於自己的應用伺服器,可以使用OpenResty開源專案,這篇文章主要介紹OpenResty(開源技術)及其相關。

OpenResty概念

  • OpenResty(也稱為ngx_openresty),是一個基於Nginx與Lua的高效能的Web應用伺服器,其內部集成了大量精良的Lua庫、第三方模組以及大多數的依賴項,用於方便地搭建能夠處理高併發、擴充套件性極高的動態Web應用、Web服務和動態閘道器。

  • OpenResty通過匯聚各種設計精良的Nginx模組,從而將Nginx有效地變成為一個強大的通用的Web應用平臺,這樣,Web開發人員和系統工程師可以使用Lua指令碼語言調動Nginx支援的各種C以及Lua模組,快速構建出足以勝任10K乃至1000K以上單機併發連線的高效能Web應用系統。

OpenResty理念

  • OpenResty致力於將你的伺服器端應用完全運行於Nginx伺服器中,充分利用Nginx的事件模型來進行非阻塞I/O通訊。不僅僅是和HTTP客戶端間的網路通訊是非阻塞的,與MySQL、PostgreSQL、Memcached、以及Redis等眾多遠方後端之間的網路通訊也是非阻塞的。

OpenResty可信度

  • 因為OpenResty軟體包的維護者也是其中打包的許多Nginx模組的作者,所以OpenResty可以確保所包含的所有元件可以可靠地協同工作。

Lua與LuaJIT

  • Lua 是一個小巧的指令碼語言。其設計目的是為了嵌入應用程式中,從而為應用程式提供靈活的擴充套件和定製功能。Lua由標準C編寫而成,幾乎在所有作業系統和平臺上都可以編譯,執行。
  • Lua 指令碼可以很容易的被C/C++程式碼呼叫,也可以反過來呼叫C/C++的函式,這使得Lua在應用程式中可以被廣泛應用。不僅僅作為指令碼語言,也可以作為普通的檔案,代替XML,INI等檔案格式,並且更容易理解和維護。
  • 一個完整的Lua 直譯器不過200k,在目前所有指令碼引擎中,Lua的速度是最快的,這一切都決定了Lua是作為嵌入式指令碼的最佳選擇。
  • Lua 並沒有提供強大的庫,這是由它的定位決定的。所以lua不適合作為開發獨立應用程式的語言。Lua有一個同時進行的JIT專案,提供在特定平臺上的即時編譯功能。
  • LuaJIT 即採用C語言寫的Lua程式碼的直譯器。LuaJIT is a Just-In-Time Compiler for the lua programming language.
  • LuaJIT 可以像Lua那樣嵌入到一個應用程式裡。

OpenResty與Lua、LuaJIT

  • Nginx將LuaJIT VM嵌入其中,實現了OpenResty這個高效能服務端解決方案。

本文部分參考連結,藉此感謝先行的前輩們

如有不妥之處,歡迎批評指正,感謝開源中國做出的貢獻,本人開源中國連結如下: