skynet module

之前已经说过skynet的是做什么的,现在开始从模块上研究skynet的源码。

重要模块

gate.so:为整个skynet提供socket功能(解决外部连接数据读取的问题)
snlua.so:启动多个lua服务,skynet自带的模块中有一个重要的模块是snlua.so模块,通过snlua.so和指定lua脚本文件可以启动多个lua编写的服务,不用每个服务都是用c来编写,而且大部分逻辑都是在 lua 脚本下开发,只有需要考虑性能的模块才用 C 语言开发成库,直接提供给 lua 调用。
logger.so:日志模块,一个简单的日志系统,可以用来记录服务的相关信息。
harbar.so:(集群模块)节点服务,每个Skynet运行都是一个节点

重要服务

launcher.lua:在lua中启动服务
skynet.lua:lua常用功能封装
skynet.so:lua调用skynet功能

模块加载

skynet模块加载相关在skynet-module.c skynet-module.h这两个文件里。这里的模块在linux下指的是so,在windows下指的是dll,在skynet中指的是config中配置的cpath下的文件。

每个模块需要实现四个最基本的函数,create/init/release/signal。create做内存分配。init做初始化,它可能会做一些其它的事情,比如打开网络,打开文件,函数回调挂载等等。relase做资源回收,包括内存资源,文件资源,网络资源等等,signal是发信号,比如kill信号,告诉模块该停了。

自定c module

如果想用其它协议(或自定义c代码),可以模仿以上模块,自定义so。在从lua中读这个so。


Arreglar los problemas económicos es fácil, lo único que se necesita es dinero.