默认
发表评论 11
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
服务端的Session可以存放在Redis中实现集群吗?
阅读(20390) | 评论(11 收藏 淘帖
看当前的代码实现中,Session默认是从本机的ConcurrentMap获取的;

如果用户量足够大,是不是ConcurrentMap会出现OOM?

另外一个问题就是当部署多台机器的时候,每台机器存储的是部分用户信息,看全局发送使用的是RabbitMQ,但是感觉MQ也不能保证消息路由到有目标用户Session的机器上啊。

能不能考虑吧RabbitMQ替换为Redis,多机访问同一个Redis从而实现用户会话共享,在获取用户会话的时候直接从Redis中获取。

总结下,两个问题:
1、本次使用ConcurrentMap会不会有OOM问题?
2、部署集群的时候能不能使用Redis存储Session,Redis怎么存储Netty的Session对象?

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

上一篇:接入层如果使用websocket还需自已实现心跳机制吗?下一篇:求教关于IM用户信息和群聊信息缓存的差异更新和拉取问题
推荐方案
评论 11
引用:JackJiang 发表于 2022-08-30 11:29
1、评什么redis能存几十几百G的数据,java不能?
2、Redis里可以存用户id以及用户所连接im的实例信息,但 ...

Java存储几十几百G应该靠的是集群吧;

如果Session存在单机上,发送C2C消息的时候,首先用Redis获取到对方的用户session在哪一台机器上?然后再把数据路由到另外一台机器?  
如果是路由的话,路由到另外一台机器在IM中有什么好的实现方式吗?



打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部