本文重点介绍 即时通讯IM 的系统设计,包含设计思路、每个模块的功能、主要流程介绍、常见问题解答。
企业级即时通讯系统,在 提高团队沟通协作效率 的基础上,实现 万物互联 场景
本文结合IM主流需求,阐述了IM系统架构。从宏观层面,希望大家有一个初步的认识。
接下来,本专题将深入介绍核心功能的实现逻辑。(请客官坐稳扶好)
这套架构的核心 有几个1 . hazelcast 插件 redis化 ,将cache 从 hazelcast 移到redis中 (已完成)
2 . redis cluster (横向扩展 ,避免hot key的问题 ,以及 其他一些性能问题)(已完成)
3 . kafka im 与外部系统的对接
4 . 监控体系 完善 与对接
测试的点
1.同一节点用户 在线消息 与离线消息 吞吐量
2.不用用户节点 吞吐量
存在的问题
1.不同节点 , 吞吐量分布 比较 难以估测
By 紫韵: 最近对 IM 系统产生了兴趣,就看了些博客,现希望通过一个系列的文章对其稍作总结与记录,如有不对,还望指正。
IM:Instant Messaging,即时通讯,是一个允许两人或多人通过网络实时传输文字、语音、视频等的终端服务,如现在常用的 QQ、微信、百度 Hi 等。IM 完全基于 TCP/IP 网络协议族实现,而 TCP/IP 协议族则是整个互联网得以实现的技术基础。
典型的 IM 通讯方式有如下四种:
P2P &&服务器中转
一般常用的 IM 通讯方式就是 P2P 和服务器中转这两种,下面简要对比分析这两者的区别。
P2P:
P2P 多见于局域网内聊天工具,典型的应用有:飞鸽传书、天网 Maze 等。这类软件在启动后一般做两件事情:
进行 UDP 广播:发送自己信息和接受同局域网内其他端信息;
开启 TCP 监听:等待其他端进行连接。
限制和不便:
只适合 ** 在线 ** 的 ** 点对点 ** 消息传输,对离线、群组等业务支持不够;
由于 NAT 的存在,使得不同局域网内机器互联难度大大上升,在某些网络类型(对称 NAT)下无法建立连接。
** 服务器中转 **
几乎所有互联网 IM 产品都采用服务器中转这种方式进行消息传输,相比于 P2P 的方式,它的优劣如下:
** 典型的 IM 工作方式如下:**
客户端登陆 IM 通讯中心(IM 通讯服务器),获取好友列表,获取离线消息,将自身标志为在线状态,与聊天对象建立聊天通道,进行文字、语音等通信。
一个典型的 IM 系统的选型过程大致包含如下几个部分:
** IM 系统架构分层:**
一个典型的 IM 系统可能由如下及部分组成:
*** 功能点分析:***
*** 技术点分析:***
** 移动端 IM 客户端难点 **
** 移动端架构设计的难点 **
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)