文章目录
  1. 1. 目标
  2. 2. 细节
    1. 2.1. 服务
    2. 2.2. 服务间的通信
    3. 2.3. 组播
    4. 2.4. 日志
  3. 3. 已实现的服务
    1. 3.1. master 和 harbor
    2. 3.2. gate
    3. 3.3. web
  4. 4. 项目地址

目标

参考云风 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

文章目录
  1. 1. 目标
  2. 2. 细节
    1. 2.1. 服务
    2. 2.2. 服务间的通信
    3. 2.3. 组播
    4. 2.4. 日志
  3. 3. 已实现的服务
    1. 3.1. master 和 harbor
    2. 3.2. gate
    3. 3.3. web
  4. 4. 项目地址