skynet源码剖析06 service-src下的C服务实现文件说明
来源:互联网 发布:adobe for mac 编辑:程序博客网 时间:2024/05/01 20:01
service-src
这个目录下存放了skynet用到的c service的实现
databuffer.h
hashid.h
servie_gate.c
这3个文件时gate服务的实现 gate主要用于skynet与外部的tcp通讯 可以理解为将外部的tcp消息转换成skynet内部的消息
所以像master harbor服务这些都需要以来gate与外界通信
master = master + gate
harbor = harbor + gate
具体是说明见: http: blog.codingnow.com/2012/09/the_design_of_skynet.html
hashid 就是应用层连接到客户端的peer_fd
databuffer 保存了某个客户端fd对应的数据
skynet_master.c
skynet_harbor.c
用于实现skynet集群间的内部通讯 不同skynet节点间的通信 skynet需要建立n*n条tcp连接来实现内部节点的通信Harbor 间通过单向的 tcp 连接管道传输数据,完成不同的 skynet 节点间的数据交换。skynet 目前支持一个全局名字服务,可以把一个消息包发送到特定名字的服务上。这个服务不必存在于当前 skynet 节点中。这样,我们就需要一个机构能够同步这些全局名字。
为此,我实现了一个叫做 master 的服务。它的作用就是广播同步所有的全局名字,以及加入进来的 skynet 节点的地址。本质上,这些地址也是一种名字。同样可以用 key-value 的形式储存。即,每个 skynet 节点号对应一个字符串的地址。skynet的 master服务 master服务保存了key-value key就是skynet的handle value就handle对应的服务matser用于skynet不同节点间的同步我设计了一台 master 中心服务器用来同步机器信息。把每个 skynet 进程上用于和其他机器通讯的部件称为 Harbor 。每个 skynet 进程有一个 harbor id 为 1 到 255 (保留 0 给系统内部用)。在每个 skynet 进程启动时,向 master 机器汇报自己的 harbor id 。一旦冲突,则禁止连入。master 服务其实就是一个简单的内存 key-value 数据库。数字 key 对应的 value 正是 harbor 的通讯地址。另外,支持了拥有全局名字的服务,也依靠 master 机器同步。比如,你可以从某台 skynet 节点注册一个叫 DATABASE的服务节点,它只要将 DATABASE 和节点 id 的对应关系通知 master 机器,就可以依靠 master 机器同步给所有注册入网络的 skynet 节点。master 做的事情很简单,其实就是回应名字的查询,以及在更新名字后,同步给网络中所有的机器。skynet 节点,通过 master ,认识网络中所有其它 skynet 节点。它们相互一一建立单向通讯通道。也就是说,如果一共有 100 个 skynet 节点,在它们启动完毕后,会建立起 1 万条通讯通道。
skynet_multicast.c
用于skynet的多播
skynet_tunnel.c
设置转发地址 即设置 forward的目的地址而跨集群分组又如何做到呢?这里是在上层用 lua 来做了进一步的封装。首先,提供了一个简单的,用 C 编写的服务,叫做 tunnel 。它可以把发送给它的消息,无条件的转发到另一个 handle 上。这个转发 handle 可以是在不同 skynet 节点上的。
service_logger.c
skynet的日志服务
skynet_snlua.c
skunet_lua.h
lua 服务生成器lua服务的消息 先到 service_snlua,再分发到lua服务中 每个lua服务其实 是一个service_snlua + 实际的lua服务总和
- skynet源码剖析06 service-src下的C服务实现文件说明
- skynet-src下核心文件说明
- skynet源码分析【skynet定时器服务的实现】
- skynet源码分析【skynet服务回调函数的实现】
- skynet源码分析【skynetsnaxd服务的实现】
- skynet源码剖析02 socket-server下 具体实现
- skynet-源码分析1:目录下的文件整理
- skynet学习笔记【skynet multicast服务的实现】
- Skynet服务器框架(二) C源码剖析启动流程
- 【Skynet】Socket源码剖析一
- 【Skynet】Socket源码剖析二
- skynet源码学习 - logger服务的工作原理
- Skynet服务器框架(六) Socket服务源码剖析和应用
- skynet源码分析【skynet名字的管理】
- Skynet 源码学习 -- 服务ID skynet_handle.c , 服务模块skynet_module.c
- Snax(方便实现skynet服务)
- skynet底层源码阅读(4)-服务管理
- skynet底层源码阅读(5)-服务
- 17228 真.狼人游戏[C]
- 解析json之com.google.gson.Gson
- 基于DTMF音调的数据通信(一)——android平台
- P53 第37题 数字对称的东西
- 阶段性手记
- skynet源码剖析06 service-src下的C服务实现文件说明
- 二分查找分C++实现
- hdu 2199 Can you solve this equation?
- sql sever 2008表连接方式总结
- HDOJ-2199-Can you solve this equation?(二分查找)
- skynet定时器源码分析
- 网络爬虫
- Android数据存储之操作SQLite
- ✅确定下来的一种说法