OpenResty(也稱(chēng)為ngx_openresty, 后面簡(jiǎn)稱(chēng)為OR)是一個(gè)基于Nginx為基礎(chǔ)核心,通過(guò)擴(kuò)展第三方功能模塊(如比:mysql, PostgreSQL,Memcached,Redis等等),使我們可以用lua(腳本語(yǔ)言)對(duì)Nginx核心和三方擴(kuò)展模塊進(jìn)行業(yè)務(wù)開(kāi)發(fā)。
OpenResty優(yōu)勢(shì)
核心
基于Nginx核心為基礎(chǔ),完全運(yùn)行于Nginx服務(wù)內(nèi)部中。
運(yùn)行穩(wěn)定,輕量級(jí),內(nèi)存占用少。
事件驅(qū)動(dòng)模型和非阻塞I/O
利用 Nginx 本身的異步非阻塞的事件驅(qū)動(dòng)進(jìn)行I/O通信,
利用 Nginx 本身的高效的多路復(fù)用模型 (epoll/linux, kqueue/freebsd, eventport/solaris)
注:不僅僅是和 HTTP 客戶端間的網(wǎng)絡(luò)通信是非阻塞的,與Mysql、PostgreSQL、Memcached 以及 Redis 等眾多遠(yuǎn)方后端之間的網(wǎng)絡(luò)通信也是非阻塞的。
lua
相對(duì)于nginx module (C)開(kāi)發(fā),lua本身具有語(yǔ)法簡(jiǎn)單,弱類(lèi)型,自帶GC(不用手動(dòng)管理內(nèi)存)等特性,大大減輕了開(kāi)發(fā)上手難度。
性能
快速構(gòu)造出足以勝任 10K 乃至 1000K 以上單機(jī)并發(fā)連接的高性能 Web 應(yīng)用系統(tǒng)。
OpenResty 原理
Nginx 采用的是 master-worker 模型,一個(gè) master 進(jìn)程管理多個(gè) worker 進(jìn)程,基本的事件處理都是放在 woker 中,master 負(fù)責(zé)一些全局初始化,以及對(duì) worker 的管理。
在OpenResty中,每個(gè) woker 使用一個(gè) LuaVM,當(dāng)請(qǐng)求被分配到 woker 時(shí),將在這個(gè) LuaVM 里創(chuàng)建一個(gè) coroutine(協(xié)程),協(xié)程之間數(shù)據(jù)隔離。
更多關(guān)于云服務(wù)器,域名注冊(cè),虛擬主機(jī)的問(wèn)題,請(qǐng)?jiān)L問(wèn)西部數(shù)碼官網(wǎng):www.ps-sw.cn