上一次谈到,服务器的架构中,lua承担了业务逻辑,这次探究下lua模块的引擎部分。
所谓引擎,是个很模糊的说法,其实是将一些通用的部分封装在了一起。
包含了服务器协程的启动和管理,对数据库连接池的连接和管理,对用户协程的管理。单个协程的的心跳处理函数是用Lua写的,然后在c++的网络模块引用,这么做是为了将管理模块统一在一起,底层c++是相当于通用的网络io。
在之前公司的项目这种,数据包是注册在工厂里,按照数据包的包号获取数据包,然后进行每个数据包的执行函数进行执行。而在lua引擎中,所有的模块函数,都注册在统一个table里,利用hash来查找然后执行。
游戏服务器的业务逻辑模块,都是单线程的。