核心程序与服务
主程序:
架构从上面的skynet主程序启动, 然后,可在“终端”中输入:$ ./skynet examples/config:
./说明是当前目录,skynet是程序名,examples/config为配置文件的路径和名字,这里的配置文件是用lua写的一个脚本。
config内容为:
这里最重要的一条就是:start=”main”意思就是设置第一个启动的服务。这里指向examples/main.lua脚本服务模块。因为下面配置的luaservice的路径,所以不需要我们再输入examples/了,skynet会在配置的目录下找到main.lua脚本。cpath是用C语言写的服务模块路径。root=”./”表示根目录为skynet启动的目录。thread为启动的工作线程数。logger=nil表示不记录日志,你可以指定一个路径和文件名,这样 “终端”输出的内容就写到日志中文件了。
关键服务:
master.so:
主服务,就做两件事,回应名字的查询和在更新名字后,同步到其他节点。其他节点在启动时会把自己的harbor注册到master服务中。这样透过master服务就能把各个节点都连在一起,相互沟通了。每个节点之间都相互建立一条双向的通讯通道。
harbor.so:
节点服务,每个Skynet运行都是一个节点,在examples/main.lua中使用harbor来配置节点的编号,Skynet限制只有1到255个节点(保留0给系统内部使用),并把harbor的8bit值放在服务Id的最高8bit,因为服务Id是32bit的,所以Skynet的本地服务只能用低24位来表示,一个Skynet最多可以启动16M个服务模块。
logger.so:
日志服务,一个简单的日志系统,可以用来记录服务的相关信息。
gate.so:
门服务,管理Soket。
snlua.so:
lua服务,用于加载lua写的skynet服务模块,而不仅仅限制于C语言才能写服务模块。十分核心和重要的模块。当然如果你不喜欢lua,你也可以换成python等其他脚本引擎。