为自己搭建一个分布式 IM(即时通讯) 系统

 

前言

大家新年快乐!

新的一年第一篇技术文章希望开个好头,所以元旦三天我也没怎么闲着,希望给大家带来一篇比较感兴趣的干货内容。

老读者应该还记得我在去年国庆节前分享过一篇

本文较长,高能预警;带好瓜子板凳。



于是在之前的基础上我完善了一些内容,先来看看这个项目的介绍吧:

CIM(CROSS-IM) 一款面向开发者的 IM(即时通讯)系统;同时提供了一些组件帮助开发者构建一款属于自己可水平扩展的 IM 。

借助 CIM 你可以实现以下需求:

完整源码托管在 GitHub : https://github.com/crossoverJie/cim

演示

本次主要涉及到 IM 即时通讯,所以特地录了两段视频演示(群聊、私聊)。

点击下方链接可以查看视频版 Demo。

Bilibili
群聊 私聊

也在公网部署了一套演示环境,想要试一试的可以联系我加入内测群获取账号一起尬聊😋。

架构设计

下面来看看具体的架构设计。

  • CIM 中的各个组件均采用 SpringBoot 构建。
  • 采用 Netty + Google Protocol Buffer构建底层通信。
  • Redis 存放各个客户端的路由信息、账号信息、在线状态等。
  • Zookeeper 用于 IM-server服务的注册与发现。

整体主要由以下模块组成:

cim-server

IM 服务端;用于接收 client连接、消息透传、消息推送等功能。

支持集群部署。

cim-forward-route

消息路由服务器;用于处理消息路由、消息转发、用户登录、用户下线以及一些运营工具(获取在线用户数等)。

cim-client

IM 客户端;给用户使用的消息终端,一个命令即可启动并向其他人发起通讯(群聊、私聊);同时内置了一些常用命令方便使用。

流程图

整体的流程也比较简单,流程图如下:

  • 客户端向 route 发起登录。
  • 登录成功从 Zookeeper 中选择可用 IM-server 返回给客户端,并保存登录、路由信息到 Redis
  • 客户端向 
    关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信