简介
纯go实现的im即时通讯系统,各层可单独部署,之间通过rpc通讯,支持集群,github地址 /Terry-Ye/im, 学习于goim, 总分三层,
comet(用户连接层),可以直接部署多个节点,每个节点保证serverId 唯一,在配置文件comet.tomllogic(业务逻辑层),无状态,各层通过rpc通讯,容易扩展,支持http接口来接收消息job(任务推送层)通过redsi 订阅发布功能进行推送到comet层。
架构图
时序图
以下Comet 层,Logic 层,Job层都可以灵活扩展机器
特性
分布式,可拓扑的架构支持单个,房间推送心跳支持(gorilla/websocket内置)基于redis 做消息推送轻量级持续迭代…部署
安装go get -u /Terry-Ye/immv $GOPATH/src//Terry-Ye/im $GOPATH/src/imcd $GOPATH/src/imgo get ./...
包拉不下来的情况,例
package /x/net/ipv4: unrecognized import path "/x/net/ipv4" (https fetch: Get /x/net/ipv4?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)
从github 拉下来,再移动位置
git clone /golang/net.gitmkdir -p /x/mv net $GOPATH/src//x/
部署im
安装comet、logic、job模块
cd $GOPATH/src/im/cometgo installcd ../logic/go installcd ../jobgo installnohup $GOPATH/bin/logic -d $GOPATH/src/im/logic/ 2>&1 > /data/log/im/logic.log &nohup $GOPATH/bin/comet -d $GOPATH/src/im/comet/ 2>&1 > /data/log/im/comet.log &nohup $GOPATH/bin/job -d $GOPATH/src/im/job/ 2>&1 > /data/log/im/job.log &
im_api 是im系统中使用的接口,需要像demo那样整体跑起来需要完整的部署
部署注意事项
部署服务器注意防火墙是否开放对应的端口(本地不需要,具体需要的端口在各层的配置文件)demo
聊天室::1999/