goim(3):goim代码简单的分析

4 篇文章 0 订阅

本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/78847570
未经博主允许不得转载。
博主地址是:http://blog.csdn.net/freewebsys

1,关于 goim


上次已经把goim 简单的本地安装了下,下面开始学习里面的代码了。
网络上面已经有了很好的分析了:
http://cdn2.jianshu.io/p/8bd96a9a473d
https://laohanlinux.github.io/2016/12/22/goim%E6%BA%90%E7%A0%81%E5%89%96%E6%9E%90/
但是呢,学习嘛,还是自己也研究下,画画图,分析下。
上次已经把goim单机跑起来了:
http://blog.csdn.net/freewebsys/article/details/78847333

2,整体模块分析


goim 项目一共分为 4 个模块,comet,logic,router,job 模块。
其中的调用关系如下:

其中 comet服务 在最前面对外提供服务,提供 tcp 和 websocket 两种服务。
接受到消息之后 交给 logic 模块处理。logic 模块在调用 router 查询路由信息。将发送的消息交给 kafka,再由 job 服务读取kafka的消息,推给 comet服务。
拆分成这么多模块的好处是可以多实例部署。其中 在 comet,router,logic 模块都提供了性能监控 net/http/pprof
参考:http://www.cnblogs.com/yjf512/archive/2012/12/27/2835331.html
同时还提供了monitor 服务,服务启动之后访问 xxx:port/monitor/ping
返回 ok 说明服务启动正常,方便运维检查系统。

3,comet 模块


comet 模块是在最前端,主要负责和client的链接保持,同时接受,发送消息,通知到客户端。检查链接是否断开。

其中rpc调用参考:
https://github.com/astaxie/build-web-application-with-golang/blob/master/zh/08.4.md

这里写图片描述

4,logic 模块


logic 模块是comet 模块调用的,接受 comet 模块的命令,
然后进行处理,再发送的消息的kafka队列上,同时链接 router 模块,记录用户的 uid server room 等信息。同时获得router模块的信息。

5,router 模块


router 主要记录了用户的session信息。存储在 Bucket 对象里面。
这里写图片描述

5,job 模块


job服务每秒都在同步 comet的信息,然后再读取 kafka队列的信息。
push 到相关的comet服务器上。用户就接受到了消息。

6,总结


简单的了解了下 goim的代码结构。这个是一个单机的部署。
有些地方还是没有太明白,慢慢学习吧。下面可以使用goim 开发。
一个简单的聊天系统了,边学习边使用吧。

本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/78847570
未经博主允许不得转载。
博主地址是:http://blog.csdn.net/freewebsys

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值