skynet提供服务的方式是基于harbor间通信来完成,在skynet的配置文件中有一个harbor参数,这个参数我原来以为是用来控制一个master集群可以启动多少个harbor结点的,一次写demo的过程中,发现skynet.send无法调用另一个harbor的服务,总是报告drop message,检查之后才发现是因为它们在config配置里,属于同一个harbor,才明白这个参数是配置harbor id的,这样的设计认为还是有一点问题,如果harbor太多了,可能会忘记现在已经起到了多少个harbor,现在的设计是如果harbor_id冲突,就会以最后起动那个harbor为准

下图是一个harbor集群,skynet的网络拓扑图,这种拓扑方式的特点是每一个harbor都对应着一台真实的机器,我把它称作实harbor

image   image

实harbor可以扩展为虚harbo,这样一个harbor并不与一台真实的机器对应而是每一个harbor就是一个集群中,每一个harbor集群下挂着多个结点,每个结点再提供不同的服务,skynet的特点并不会因为它们起的是同一个harbor而就会提供相同的服务,因为服务的入口点是在config中配置的,下图是虚harbor拓扑图

image

master间通信。现在的skynet是在同一个master间通信,可以把它扩展为多个master间通信,有这样一种应用场景,每一个master都专注于提供一类服务,这个服务的完成依赖于其集群中的多个harbor完成,这个时候一个master有需要调用另外一个master提供的服务

上面只是一些对skynet的想法,具体实现以后再上代码吧