赞
踩
OpenIM是一个即时通讯解决方案。它提供了一系列的开源库、协议、API和Web客户端,帮助企业、开发者和组织快速搭建、部署和运营即时通讯应用。 OpenIM采用了protocol buffer作为通讯协议,该协议是一种基于XML的协议,用于实现即时通讯、在线状态、文件传输等功能。OpenIM还支持WebRTC技术,可以实现音视频通话和会议功能。 OpenIM提供了易于集成和定制的API和SDK,支持多种平台和语言,如iOS、Android、Web等。 市面上的即时通信厂商百花齐放,包括网易云信,腾讯即时通信,环信,融云等等,私有化部署几万至几十万不等。 OpenIM的优势----开源。
消息接入层,采用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的架构及流程介绍,在这个基础上,基于该开源项目的二次开发~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。