Node-Lua基于Lua实现的脚本和服务器引擎
Node-Lua是一款基于Lua实现的脚本和服务器引擎,它支持构建海量Lua服务(Context_Lua)并以多线程方式运行在多核服务器上,采用了任务多路复用的设计方案,有效利用了多核优势。node-lua致力于构建一个快速、简单易用的Lua脚本和服务器开发和运行环境。该引擎参考了Node-Js和Skynet的设计思想,并对其进行了整合和优化。
该引擎当前版本实现了以下特性:
引擎核心层同时支持同步阻塞和异步回调的api设计方案,让异步io等接口更加简单易用。调用同步和异步api时引擎核心层将会自动挂起正在执行的lua函数(coroutine),直接放弃占用的cpu资源;
服务创建以指定lua文件为入口脚本文件,脚本直接运行在新服务的coroutine环境中,支持在入口脚本当中直接调用同步和异步api接口,支持无限循环调用同步api接口;
可以创建海量独立的lua服务(context_lua),引擎会根据当前运行服务总量和物理核心数量动态调整工作线程数量,当引擎没有需要处理的服务请求时(即任务队列为空),所有物理线程将会挂起等待,直到有新的任务(lua同步和异步回调)需要被唤醒运行;
支持在用户创建的lua coroutine中直接调用引擎提供的同步和异步api接口,对用户态coroutine执行不会产生任何影响;
引擎会检测进程当中有效的lua服务总量,当服务总量为0时,引擎会自动安全退出(可以用node-lua作为简单的lua脚本解释器使用)。同时,lua服务也会检测服务当中运行和挂起的同步和异步回调总量,当回调总量为0时,lua服务会被标记并安全退出;
引擎框架任务调度采用了线程任务队列的设计,减少了不同线程之间对任务资源的竞争。另外,任务调度也引入了work-stealing算法对调度进行了深度优化;
引擎提供了tcp socket相关的大部分api接口,同时支持unix_domain_socket;
引擎提供了lua服务相关的api接口,包括服务创建、销毁、通信等同步和异步接口;
引擎提供了定时相关的api接口,基本满足所有的定时设计,并直接被嵌入到了其它同步和异步api接口当中(tcp,服务相关的api等);
引擎提供了快速lua字符串缓存结构,可以用于高效的广播接口当中;
引擎当前提供了centos,macos,windows环境下的编译和安装;
Node-Lua在下个版本将会提供以下新功能和特性:
udp接口支持;
tcp和udp socket在lua服务之间的迁移;
在线服务热更新;
在线服务调试;
提供FreeBSD等环境下的编译和安装;
提供基准测试版本;
欢迎大家发现Node-Lua当中的bug,对Node-Lua提出更好的建议!