claw 设计草稿
文章目录
目标
参考云风 skynet,实现 Go 版本的开源服务器引擎。
细节
服务
按服务来拆模块的好处不说了。只说 Go 来的实现方式。Go 里有 channel 和 goroutine。消息队列和轻量级线程都天然解决了。
服务间的通信
同进程内的服务之间通信,直接往对方 channel 发消息即可。不同进程里靠各进程自己的 harbor 服务来转发。harbor 服务来负责集群间的通信。
集群里设置一个 master 服务来做全局的名字服务,主要用于登记和同步集群里各个进程开启的各个服务。所有 harbor 启动后向 master 注册自己,master 向所有 harbor 广播同步新加入的这个机器。
组播
经常需要向某几个服务广播一个消息,组播问题。multicast 服务来管理组播。
日志
使用 glog。
已实现的服务
master 和 harbor
暂时 master 做为 harbor 的中心控制器的。后续会改进,做成 harbor 之间两两通信,减少对 master 的单点依赖。
gate
gate 用来做通常的网络监听用。目前的很简单,用户需要向这个服务器注册自己的包解析和处理器。
web
web 负责 http 的监听,template 的加载 cache,几个通用函数的提取。
项目地址
项目地址:https://github.com/yangsf5/claw