Node-Lua基于Lua實現(xiàn)的腳本和服務(wù)器引擎
Node-Lua是一款基于Lua實現(xiàn)的腳本和服務(wù)器引擎,它支持構(gòu)建海量Lua服務(wù)(Context_Lua)并以多線程方式運(yùn)行在多核服務(wù)器上,采用了任務(wù)多路復(fù)用的設(shè)計方案,有效利用了多核優(yōu)勢。node-lua致力于構(gòu)建一個快速、簡單易用的Lua腳本和服務(wù)器開發(fā)和運(yùn)行環(huán)境。該引擎參考了Node-Js和Skynet的設(shè)計思想,并對其進(jìn)行了整合和優(yōu)化。
該引擎當(dāng)前版本實現(xiàn)了以下特性:
引擎核心層同時支持同步阻塞和異步回調(diào)的api設(shè)計方案,讓異步io等接口更加簡單易用。調(diào)用同步和異步api時引擎核心層將會自動掛起正在執(zhí)行的lua函數(shù)(coroutine),直接放棄占用的cpu資源;
服務(wù)創(chuàng)建以指定lua文件為入口腳本文件,腳本直接運(yùn)行在新服務(wù)的coroutine環(huán)境中,支持在入口腳本當(dāng)中直接調(diào)用同步和異步api接口,支持無限循環(huán)調(diào)用同步api接口;
可以創(chuàng)建海量獨(dú)立的lua服務(wù)(context_lua),引擎會根據(jù)當(dāng)前運(yùn)行服務(wù)總量和物理核心數(shù)量動態(tài)調(diào)整工作線程數(shù)量,當(dāng)引擎沒有需要處理的服務(wù)請求時(即任務(wù)隊列為空),所有物理線程將會掛起等待,直到有新的任務(wù)(lua同步和異步回調(diào))需要被喚醒運(yùn)行;
支持在用戶創(chuàng)建的lua coroutine中直接調(diào)用引擎提供的同步和異步api接口,對用戶態(tài)coroutine執(zhí)行不會產(chǎn)生任何影響;
引擎會檢測進(jìn)程當(dāng)中有效的lua服務(wù)總量,當(dāng)服務(wù)總量為0時,引擎會自動安全退出(可以用node-lua作為簡單的lua腳本解釋器使用)。同時,lua服務(wù)也會檢測服務(wù)當(dāng)中運(yùn)行和掛起的同步和異步回調(diào)總量,當(dāng)回調(diào)總量為0時,lua服務(wù)會被標(biāo)記并安全退出;
引擎框架任務(wù)調(diào)度采用了線程任務(wù)隊列的設(shè)計,減少了不同線程之間對任務(wù)資源的競爭。另外,任務(wù)調(diào)度也引入了work-stealing算法對調(diào)度進(jìn)行了深度優(yōu)化;
引擎提供了tcp socket相關(guān)的大部分api接口,同時支持unix_domain_socket;
引擎提供了lua服務(wù)相關(guān)的api接口,包括服務(wù)創(chuàng)建、銷毀、通信等同步和異步接口;
引擎提供了定時相關(guān)的api接口,基本滿足所有的定時設(shè)計,并直接被嵌入到了其它同步和異步api接口當(dāng)中(tcp,服務(wù)相關(guān)的api等);
引擎提供了快速lua字符串緩存結(jié)構(gòu),可以用于高效的廣播接口當(dāng)中;
引擎當(dāng)前提供了centos,macos,windows環(huán)境下的編譯和安裝;
Node-Lua在下個版本將會提供以下新功能和特性:
udp接口支持;
tcp和udp socket在lua服務(wù)之間的遷移;
在線服務(wù)熱更新;
在線服務(wù)調(diào)試;
提供FreeBSD等環(huán)境下的編譯和安裝;
提供基準(zhǔn)測試版本;
歡迎大家發(fā)現(xiàn)Node-Lua當(dāng)中的bug,對Node-Lua提出更好的建議!
