Skip to content
Zheng Ping edited this page Apr 18, 2015 · 2 revisions

Skynet

核心

Skynet的核心只处理一个问题,把一个符合规范的C模块从动态库中启动起来,绑定一个永不重复的id作为其handle,这个模块被称作服务(Service),服务可以取一个易读的名字,服务间可以自由发送消息。

核心不处理什么问题呢:它不解决进程间通信问题,它没有定义类似于TCP连接的概念,没有约定RPC调用协议,也没有设定数据包的编码方式。

简单地说,Skynet只负责把一个数据包从一个服务发送出去,让同一进程内的另一个服务收到,调用对应的回调函数处理。它保证,模块的初始化过程,每个独立的callback调用,都是线程安全的。

Skynet核心不解决远程数据通信交换工作,集群间的通信由一个独立的harbor服务来完成。

master服务的作用就是广播同步所有的全局名字,以及加入进来的skynet地址。master服务不必存在当前的Skynet节点中。

API简析

skynet.uniqueservice 表明在同一个节点中一个服务只启动一次。默认情况下uniqueservice是不跨节点的,但也可以通过传递额外的参数来使得全网的服务跨节点实现唯一。注意uniqueservice是惰性初始化,整个系统第一次初始化时,服务才会被启动起来。skynet用来查询服务,如果服务不存在,这个api会阻塞到它启动好为止。uniqueservice一般专用于服务管理。

Clone this wiki locally