IM-Server 即时通信技术分享

Open-IM概述--时不我待,拥抱趋势

        OpenIM是一个即时通讯解决方案。它提供了一系列的开源库、协议、API和Web客户端,帮助企业、开发者和组织快速搭建、部署和运营即时通讯应用。     OpenIM采用了protocol buffer作为通讯协议,该协议是一种基于XML的协议,用于实现即时通讯、在线状态、文件传输等功能。OpenIM还支持WebRTC技术,可以实现音视频通话和会议功能。     OpenIM提供了易于集成和定制的API和SDK,支持多种平台和语言,如iOS、Android、Web等。     市面上的即时通信厂商百花齐放,包括网易云信,腾讯即时通信,环信,融云等等,私有化部署几万至几十万不等。     OpenIM的优势----开源。

系统架构

服务端-App-应用服务器的关系

用户注册

用户登陆

消息网关

        消息接入层,采用websocket协议接入,服务模块无状态,柔性伸缩,运维简单。通过MQ让业务模块之间解耦,消息写入MQ即表示发送成功。 (1)负责用户连接管理,保持长连接,存储uid->conn映射关系; (2)负责消息接收落地,成功写入MQ后给客户端返回成功;

消息转发

        消息处理rpc,作为消费者从MQ中消费(读取)消息,递增接收者收件箱seq, 关联seq和msg,并存储到mongodb。全量历史消息无收件箱概念,消息作为 流水记录落地mysql即可,两者通过协程独立处理,双方互不影响。msg作为 无状态服务节点,如果消息量增加,可以启动冗余节点服务,加快消息处理流程。 (1)负责消费MQ中的消息,作为消费者,实时感知新信息达到,并触发回调逻辑; (2)读取receiver userId,并通过redis的incr操作递增服务端对应的seq; (3)关联seq和msgid,并存入以receiver userid为key的mongodb中; (4)把消息作为历史记录存入mysql中,作为消息备份

上面是openim-server的架构及流程介绍,在这个基础上,基于该开源项目的二次开发~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值