推荐大家关注一个公众号

后台回复“大礼包”有惊喜礼包!

日英文

It has not been the time yet to give up as long as you still feel it is not the end. I could cry for a thousand times if you promise me a happy ending.

只要心里还存着不甘心,就还不到放弃的时候。只要是喜剧收尾,过程你让我怎么哭都行。

每日掏心话

只有是心存美好的人,才是会去欣赏别人。人生很奇怪,能这样说服自己的事,多半是会成功的事。

责编:乐乐 | 来自:ancii.com/awugjp68e/

往日回顾:

正文

大家好,我是小乐。

打开网易新闻 查看精彩图片

本文介绍了一个 go 语言实现的简单 im 即时通信系统。

简介

纯go实现的im即时通讯系统,各层可单独部署,之间通过rpc通讯,支持集群,github地址 https://github.com/Terry-Ye/im_api , 学习于goim, 总分三层,

  1. comet(用户连接层),可以直接部署多个节点,每个节点保证serverId 唯一,在配置文件comet.toml

  2. logic(业务逻辑层),无状态,各层通过rpc通讯,容易扩展,支持http接口来接收消息

  3. job(任务推送层)通过redsi 订阅发布功能进行推送到comet层。

系统架构图
打开网易新闻 查看精彩图片
时序图

以下Comet 层,Logic 层,Job层都可以灵活扩展机器

打开网易新闻 查看精彩图片

特性

  1. 分布式,可拓扑的架构

  2. 支持单个,房间推送

  3. 心跳支持(gorilla/websocket内置)

  4. 基于redis 做消息推送

  5. 轻量级

  6. 持续迭代...

部署

  1. 安装

go get -u github.com/Terry-Ye/im
mv $GOPATH/src/github.com/Terry-Ye/im $GOPATH/src/im
cd $GOPATH/src/im
go get ./...

golang.org 包拉不下来的情况,例

package golang.org/x/net/ipv4: unrecognized import path "golang.org/x/net/ipv4" (https fetch: Get https://golang.org/x/net/ipv4?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)

从github 拉下来,再移动位置

git clone https://github.com/golang/net.git
mkdir -p golang.org/x/

mv net $GOPATH/src/golang.org/x/

  1. 部署im

安装comet、logic、job模块

cd $GOPATH/src/im/comet
go install
cd ../logic/
go install
cd ../job
go install

nohup $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 &

  1. im_api 是im系统中使用的接口,需要像demo那样整体跑起来需要完整的部署

部署注意事项
  1. 部署服务器注意防火墙是否开放对应的端口(本地不需要,具体需要的端口在各层的配置文件)

demo

聊天室:http://www.texixi.com:1999/

使用的包

  • log: github.com/sirupsen/logrus

  • rpc: github.com/smallnest/rpcx

  • websocket: github.com/gorilla/websocket

  • 配置文件:github.com/spf13/viper

后续计划
  1. 在线列表

  2. 支持wss

  3. 聊天机器人

你还有什么想要补充的吗?

PS:欢迎在留言区留下你的观点,一起讨论提高。如果今天的文章让你有新的启发,欢迎转发分享给更多人。

版权申明:内容来源网络,版权归原创者所有。除非无法确认,我们都会标明作者及出处,如有侵权烦请告知,我们会立即删除并表示歉意。谢谢!

欢迎加入后端架构师,在后台回复“”即可。

最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。在这里,我为大家准备了一份2021年最新最全BAT等大厂Java面试经验总结。

打开网易新闻 查看精彩图片

别找了,想获取史上最简单的Java大厂面试题学习资料

扫下方二维码回复「面试」就好了

嘿,你在看吗?