探索图论在IM集群环境下的应用

简介: 我在工作中遇到了IM集群环境下消息路由问题,当集群数小时可以用内存共享的方案,当集群结点变多时,共享的数据同步会成为系统的瓶颈,为此我从网络中TCP报文的路由原理得到灵感,想了一个不用共享内存的方案,而且理论上支持大规模的集群。

我在工作中遇到了IM集群环境下消息路由问题,当集群数小时可以用内存共享的方案,当集群结点变多时,共享的数据同步会成为系统的瓶颈,为此我从网络中TCP报文的路由原理得到灵感,想了一个不用共享内存的方案,而且理论上支持大规模的集群。

应用场景如下,红色与蓝色是服务结点,橙色代表客户端结点:

当一个橙色结点要给另一个橙色结点发消息时,我们应该如何设计消息的路由策略?

上图是我们理想的消息路由路径,这时我们可以看出,红色结点是负责管理客户端的连接,而蓝色结点负责路由消息,因此我做了以下的区分:

这时我们可以把整个系统看成一个大的图,A给B消息就成了A与B的通路,理想的应该是最短路径,当然整个系统还没有这么简单,还有非常的复杂的搜索算法在里面。

这种设计对路由服务结点的性能要求较高,路由节点可能要维护自己的一张路由表,而且还要及时更新,对于每条消息也要有自己的轨迹表,记录走过的节点,这样可以解决内存共享与同步面临的问题,每个接入管理服务节点(图中的S节点)之间就可以不用相互感知,这样增加大量的节点才能成为可能。现在我对QQ和微信的解决方案很敬仰,不知道他们是否用内存共享,如何解决大量节点的集群中的Session共享,还是像我猜测的与网络中的报文路由类似的方案。

目录
相关文章
|
29天前
|
弹性计算 安全 前端开发
除了 Mattermost,这些开源 IM 应用也值得一试
在数字化时代,即时通讯(IM)已成为日常生活和工作的重要部分,开源IM应用因其透明度、可定制性和社区支持受到关注。
|
1月前
|
机器学习/深度学习 自然语言处理
基于深度学习的自然语言处理技术在智能客服系统中的应用
【2月更文挑战第21天】随着人工智能技术的不断发展,自然语言处理(NLP)技术在各个领域得到了广泛应用。本文主要探讨了基于深度学习的自然语言处理技术在智能客服系统中的应用。首先介绍了深度学习和自然语言处理的基本概念,然后分析了智能客服系统的工作原理和技术要求,接着详细阐述了基于深度学习的自然语言处理技术在智能客服系统中的具体应用,包括语义理解、情感分析和问答系统等。最后对基于深度学习的自然语言处理技术在智能客服系统中的优势和挑战进行了总结。
44 1
|
8月前
|
负载均衡 网络协议 安全
TCP 长连接层的设计和在 IM 项目的实战应用
TCP 长连接层的设计和在 IM 项目的实战应用
|
存储 缓存 移动开发
im 应用多点登录和消息漫游架构
im 应用多点登录和消息漫游架构
im 应用多点登录和消息漫游架构
|
XML JSON 编解码
IM通讯协议专题学习(八):金蝶随手记团队的Protobuf应用实践(原理篇)
本文将基于随手记团队的Protobuf应用实践,分享了Protobuf的技术原理、上手实战等(本篇要分享的是技术原理),希望对你有用。
162 0
IM通讯协议专题学习(八):金蝶随手记团队的Protobuf应用实践(原理篇)
|
消息中间件 负载均衡 安全
钉钉 IM 的 RocketMQ 应用实践 | 学习笔记
快速学习钉钉 IM 的 RocketMQ 应用实践
209 0
钉钉 IM 的 RocketMQ 应用实践 | 学习笔记
|
人工智能 自然语言处理 搜索推荐
AI客服替代优势尽显 需求匹配与普及应用尚待时日
以对话式AI技术为核心的新一代智能客服逐步走向成熟,为客服中心解决客户数量大(呼叫量高峰)、范围广,以及人工服务效率不高等诸多痛点,为提升营销服务质效,实现业务成果的最大化提供了新思路。
104 0
AI客服替代优势尽显 需求匹配与普及应用尚待时日
|
消息中间件 负载均衡 安全
钉钉 IM 的 RocketMQ 应用实践
最近几年,钉钉迅速成为一款国民级应用。IM作为钉钉最核心的功能,每天需要支持海量企业用户的沟通,同时还通过 PaaS 形式为淘宝、高德等 App 提供基础的即时通讯能力,是日均千亿级消息量的 IM 平台。
钉钉 IM 的 RocketMQ 应用实践
|
JSON 缓存 安全
开源IM项目OpenIM发布消息推送api,支持应用与IM互通深度融合
开源IM项目OpenIM发布消息推送api,支持应用与IM互通深度融合
1426 0
开源IM项目OpenIM发布消息推送api,支持应用与IM互通深度融合