淺談openresty

淺談openresty

  • 爲何會有OpenResty?html

    • 咱們都知道Nginx有不少的特性和好處,可是在Nginx上開發成了一個難題,Nginx模塊須要用C開發,並且必須符合一系列複雜的規則,最重要的用C開發模塊必需要熟悉Nginx的源代碼,使得開發者對其望而生畏。爲了開發人員方便,因此接下來咱們要介紹一種整合了Nginx和lua的框架,那就是OpenResty,它幫咱們實現了能夠用lua的規範開發,實現各類業務,而且幫咱們弄清楚各個模塊的編譯順序。
    • OpenResty(又稱:ngx_openresty) 是一個基於 NGINX 的可伸縮的 Web 平臺,由中國人章亦春發起,提供了不少高質量的第三方模塊。OpenResty 是一個強大的 Web 應用服務器,Web 開發人員可使用 Lua 腳本語言調動 Nginx 支持的各類 C 以及 Lua 模塊,更主要的是在性能方面,OpenResty能夠 快速構造出足以勝任 10K 以上併發鏈接響應的超高性能 Web 應用系統。它最大的特色就是用同步的代碼邏輯實現非阻塞的調用,其次它有單進程內的 LRU cache 和進程間的 share DICT cache,並且它是揉合 nginx 和 LuaJIT 而產生的。 OpenResty 致力於將你的服務器端應用徹底運行於 Nginx 服務器中,充分利用 Nginx 的事件模型來進行非阻塞 I/O 通訊。不單單是和 HTTP 客戶端間的網絡通訊是非阻塞的,與MySQL、PostgreSQL、Memcached、以及 Redis 等衆多遠方後端之間的網絡通訊也是非阻塞的。
  • OpenResty運行原理nginx

    • Nginx 採用的是 master-worker 模型,一個 master 進程管理多個 worker 進程,基本的事件處理都是放在 woker 中,master 負責一些全局初始化,以及對 worker 的管理。在OpenResty中,每一個 woker 使用一個 LuaVM,當請求被分配到 woker 時,將在這個 LuaVM 裏建立一個 coroutine(協程)。協程之間數據隔離,每一個協程具備獨立的全局變量_G
    • 1159210-20200110175546884-677863146.png
  • Tengine vs openrestygit

    • Tengine是由淘寶網發起的Web服務器項目。它在Nginx的基礎上,針對大訪問量網站的需求,添加了不少高級功能和特性。Tengine的性能和穩定性已經在大型的網站如淘寶網,天貓商城等獲得了很好的檢驗。它的最終目標是打造一個高效、穩定、安全、易用的Web平臺。從2011年12月開始,Tengine成爲一個開源項目,Tengine團隊在積極地開發和維護着它。Tengine團隊的核心成員來自於淘寶、搜狗等互聯網企業。
    • Tengine下載
    • 繼承Nginx-1.6.2的全部特性,兼容Nginx的配置;
      動態模塊加載(DSO)支持。加入一個模塊再也不須要從新編譯整個Tengine;
      支持SO_REUSEPORT選項,建連性能提高爲官方nginx的三倍;
      支持SPDY v3協議,自動檢測同一端口的SPDY請求和HTTP請求;
      流式上傳到HTTP後端服務器或FastCGI服務器,大量減小機器的I/O壓力;
      更增強大的負載均衡能力,包括一致性hash模塊、會話保持模塊,還能夠對後端的服務器進行主動健康檢查,根據服務器狀態自動上線下線,以及動態解析upstream中出現的域名;
      輸入過濾器機制支持。經過使用這種機制Web應用防火牆的編寫更爲方便;
      支持設置proxy、memcached、fastcgi、scgi、uwsgi在後端失敗時的重試次數
      動態腳本語言Lua支持。擴展功能很是高效簡單;
      支持管道(pipe)和syslog(本地和遠端)形式的日誌以及日誌抽樣;
      支持按指定關鍵字(域名,url等)收集Tengine運行狀態;
      組合多個CSS、JavaScript文件的訪問請求變成一個請求;
      自動去除空白字符和註釋從而減少頁面的體積
      自動根據CPU數目設置進程個數和綁定CPU親緣性;
      監控系統的負載和資源佔用從而對系統進行保護;
      顯示對運維人員更友好的出錯信息,便於定位出錯機器;
      更強大的防攻擊(訪問速度限制)模塊;
      更方便的命令行參數,如列出編譯的模塊列表、支持的指令等;
      能夠根據訪問文件類型設置過時時間;
    • agentzh是這樣說的:Tengine 是一個 nginx 的 fork,而 ngx_openresty 是 nginx 的 bundle.最初二者沒有交集,後來Tengine 也是 ngx_openresty 多數核心組件的用戶 了,Tengine pdf文檔中提到ngx_lua等核心組件也不足爲怪了。
    • Nginx開發從入門到精通 — Nginx開發從入門到精通
  • openresty資源github

  • 其它資源redis

相關文章
相關標籤/搜索