默认
发表评论 4
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?别走弯路了... 找站长给点建议
[已回复] MobileIMSDK服务端想做集群, jack哥有什么好的建议呢?
阅读(2755) | 评论(4 收藏 淘帖
目前后端服务端是用java springBoot, 把mobileSDK打成jar包在项目里用maven引用的---现在问题是服务端想做集群, 遇到几个问题:

1. SDK底层是用map记录的用户对应的channel, 如果是两台服务器的话, 用户的channel可能在两台中的一个, 是不是就不能用map了啊

2. SDK从消息接收到转发出去, 都是在本机查询channel进行发送的, 如果现在用户A的channel是建立在服务器1, 用户B的channel是建立在服务器2, 现在A要和B发消息, 是不是要改很多SDK的源码啊? 具体有哪些地方会被影响呢? ACK应答包, SDK里面循环检测消息是否需要重发等逻辑都需要修改吗?

如果想做集群, jack哥有什么好的建议呢?或者说有没有必要做集群?

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

上一篇:[已解决] 求教MobileIMSDK的H5端发送ws消息,服务器没有收到消息下一篇:[已回复] 如何从MobileIMSDK中的Protocal对象获取与dataContent同级参数
推荐方案
评论 4
im的集群那就很麻烦了。

1、你要改造成多实例,最直观的就是将在线用户所处的im实例信息存在redis里;

2、发送消息时,通过第“1”步里的redis读取该用户所在的im实例是哪个,然后通过比如:MQ或RPC向这个im实例发送消息的请求(再由这个im实例发送给连接在它上面的客户端)。

你要么把这几篇文章好好读一读,找找思路:

引用:JackJiang 发表于 2025-11-13 19:05
im的集群那就很麻烦了。

1、你要改造成多实例,最直观的就是将在线用户所处的im实例信息存在redis里;

1、能不能具体点sdk需要改那些实例,能大概列一个清单吗?改难度大吗?

架构的东西我后面再认真学习一下, 现在就是想了解mobileSDK本身需要的改动大吗?
引用:休清 发表于 2025-11-13 20:05
1、能不能具体点sdk需要改那些实例,能大概列一个清单吗?改难度大吗?

架构的东西我后面再认真学习一 ...

如果你对分布式的东西熟悉,改动的难度不大,因为需要的技术能是常规的分布式玩法。比如redis、zookeeper、MQ、RPC等等,如果你对这些没有概念,建议不要贸然动手,Im长连接分布式不是http短连接这种所谓的微服务,难度主要在于它必须时刻为每个端维护一个实时、可靠的长连接。

具体到MobileIMSDK的代码,你需要改造的主要是OnlineProcess、LocalSendHelper等。
支持下
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部