认识skynet(2)--核心程序与服务

核心程序与服务


主程序:

认识skynet(2)--核心程序与服务_第1张图片
skynet主程序

架构从上面的skynet主程序启动,  然后,可在“终端”中输入:$ ./skynet examples/config:     

./说明是当前目录,skynet是程序名,examples/config为配置文件的路径和名字,这里的配置文件是用lua写的一个脚本。

config内容为:

认识skynet(2)--核心程序与服务_第2张图片
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等其他脚本引擎。

你可能感兴趣的:(认识skynet(2)--核心程序与服务)