一、目标 参考云风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,几个通用函数的提取。
四、ps