默认
发表评论 5
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?别走弯路了... 找站长给点建议
分布式IM聊天系统服务端架构设计时遇到的一些疑问
阅读(3007) | 评论(5 收藏1 淘帖1 2
ultraim Lv.1 1 个月前 来自手机 | 只看该作者 倒序浏览 |阅读模式
对于分布式的im应用来说,接收方的网关拿到一个消息后怎么确定该消息是给哪些websocket连接的呢?我看到很多项目都是接收方网关自己或者rpc调用请求去查数据库/redis,但是我觉得这会造成无谓的网络压力。让发送方网关去查群成员,然后附着到消息上可不可以呢?奇怪的是我没看到有项目这样做

然后就是消息表,我现在采用的是写扩散。群聊消息和私聊消息放在一张表里,通过一个字段来区分会不会导致之后的业务逻辑混乱?

即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

标签:求助 IM开发
上一篇:微信读书十周年,后台架构的技术演进和实践总结

本帖已收录至以下技术专辑

推荐方案
评论 5
我在看这篇文章时有个疑问:http://www.52im.net/thread-812-1-1.html
群聊业务里,如果使用mq的话,Logic向gateway投递消息时,到底是否是每个群友的消息都投递一次呢?假如群聊有100个用户,就要投递100个消息到mq里吗?
还是说尽量聚合,把目的地是同一个gateway的消息压缩成一份(消息附加上群成员列表),然后每个gateway投递一次?
引用:ultraim 发表于 2025-12-06 14:16
我在看这篇文章时有个疑问:http://www.52im.net/thread-812-1-1.html
群聊业务里,如果使用mq的话,Logic向g ...

可以分两步:第一步先别考虑聚合,把所有消息链接都跑通。第二步搞极致优化的时候再考虑按gateway去聚合。

经验来说通常第一步你做好做透后,第二步的优化是水到渠成还不容易搞出bug。
回你主贴子内容:
1)分布式的im实例,你肯定是要管理一个集中式的实例表;
2)群聊和私聊放一张表很确定是不会逻辑混乱的,不过这主要是你表设计时是不是需要这样去做。
引用:JackJiang 发表于 2025-12-06 22:19
回你主贴子内容:
1)分布式的im实例,你肯定是要管理一个集中式的实例表;
2)群聊和私聊放一张表很确定 ...

所以就是让logic服务把群成员列表放在消息上然后再投递一次mq吗?还是说每个消息上只记录一个接收用户的id,然后投递n次mq?
引用:ultraim 发表于 2025-12-07 15:12
所以就是让logic服务把群成员列表放在消息上然后再投递一次mq吗?还是说每个消息上只记录一个接收用户的id ...

最优方式肯定是投一次
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部