goim
最后更新于:2022-04-02 04:55:49
goim 项目一共分为 4 个模块,comet,logic,router,job 模块。
其中的调用关系如下:
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/70c9d49e9141a635260f9a289fce1f86_963x610.png)
其中 comet服务 在最前面对外提供服务,提供 tcp 和 websocket 两种服务。
接受到消息之后 交给 logic 模块处理。logic 模块在调用 router 查询路由信息。将发送的消息交给 kafka,再由 job 服务读取kafka的消息,推给 comet服务。
拆分成这么多模块的好处是可以多实例部署。其中 在 comet,router,logic 模块都提供了性能监控 net/http/pprof
同时还提供了monitor 服务,服务启动之后访问 xxx:port/monitor/ping
返回 ok 说明服务启动正常,方便运维检查系统。
**comet 模块**
comet 模块是在最前端,主要负责和client的链接保持,同时接受,发送消息,通知到客户端。检查链接是否断开。
**logic 模块**
logic 模块是comet 模块调用的,接受 comet 模块的命令,
然后进行处理,再发送的消息的kafka队列上,同时链接 router 模块,记录用户的 uid server room 等信息。同时获得router模块的信息。
**router 模块**
router 主要记录了用户的session信息。存储在 Bucket 对象里面。
**job 模块**
job服务每秒都在同步 comet的信息,然后再读取 kafka队列的信息。
push 到相关的comet服务器上。用户就接受到了消息。
';