默认
发表评论 5
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
IM 如何确定用户所在接入模块,正确推送消息?
阅读(34532) | 评论(5 收藏1 淘帖1
分布式部署多个接入模块,当后面业务模块要给一个用户推送消息时,如何知道这个用户现在所在接入模块?
现在想到的方法有两个:
1 使用一致性哈希算法 ,根据用户id让用户连接到固定的接入模块,后面模块推送消息时也根据hash计算接入模块,正常情况和接入模块挂了没影响,但是如果挂了的接入模块重启或者新加接入模块,后面模块计算的时候会发给新接入模块,但是用户实际还在另一个接入模块,就有问题了,用户收不到消息了 只能等重新连接了
2 用户连接后把用户和所在接入模块存到缓存服务内,后面给用户推送消息时查一下缓存,然后推送到接入模块,这样写入访问会太频繁了

不知道目前像微信这种主流的im 这块是怎么设计的? 目前没有头绪,请大家多多指教

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

上一篇:即时通讯安全篇(八):如果这样来理解HTTPS,一篇就够了下一篇:求助关于IM中离线消息拉取时本地存储的msgID疑问

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

推荐方案
评论 5
引用:JackJiang 发表于 2018-09-04 19:40
是的,你考虑的没错。

第一种办法有明显的缺陷。

嗯嗯, 这些也是我没想到的,很好的思路,我再想想,这个缺点就是消息的实时性没法保证
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部