当前位置:   article > 正文

IM-Server 即时通信技术分享_open-im-server

open-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的架构及流程介绍,在这个基础上,基于该开源项目的二次开发~

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/793697
推荐阅读
相关标签
  

闽ICP备14008679号