本项目旨在对IM系统的架构与技术进行一次全新的尝试,发于兴趣。
系统架构设计原则:
- 极简架构
- 易于部署
- 跨平台
- 平行扩展
-
消息中心
功能:
-
用户身份校验
-
消息路由
-
消息收发
客户端连接、消息的路由、收发需要使用业务中心下发的签名进行身份校验
-
-
文件中心
功能:
-
用户身份校验
-
文件上传
-
文件下载
文件的上传、下载需要使用业务中心下发的签名进行身份校验
-
-
业务中心
提供HTTP服务,WEB后台框架技术选型为 gin
功能:
-
用户管理
-
用户身份鉴权
接收消息中心、文件中心的用户身份校验请求,返回签名
-
消息管理
-
好友管理
-
群组管理
-
-
存储集群
功能:
- 业务数据的存储
集群选型为 Cassandra , 满足平行扩展的要求
- 文本消息
- 群组消息
- 图片消息
- 文件传送
- 音频消息
- 视频消息
功能点里非斜体部分为第一期需要实现的功能
协议分为两部分
-
网络协议
Client 与 Server 网络层交互使用的协议采用 IBM 出品的 MQTT, 详细说明请参考:
采用 MQTT 基于以下考虑:
- 协议精简,于开发适于初学者,于系统适于当下的移动互联网,省电省流量
- 协议层面考虑了网络的不稳定性的处理
- 广泛应用,很多软件、系统使用,有很多开源实现
限制:
由于 MQTT 只是专注于网络层数据的交互,业务层面的逻辑需要业务系统制定规范
-
业务协议
业务协议专指 MQTT 协议中 PUBLISH 协议的 有效载荷(Payload)部分
