遇到的问题:
我目前使用Map来保存和获取userId和Channel的对应关系。但是线上要在至少两台机器上分布式部署,这样就不能直接用map来保存了。
我需要解决的:
现在想到的最好的办法是使用redis进行存储userId和channel的id,但是这个方案也有一个问题,即使userId和Channel的对应关系是分布式保存的,但是拿到字符串的channelId还是要在内存中的ChannelGroup来拿到具体的channel,那还是没有解决分布式部署的问题。请问这个问题应该如何解决?
redis是可以解决分布式存储问题的, 至于你说的需要通过channelId来去ChannelGroup 中获取channel问题,你可以直接存channel,或者channelId、channel都缓存起来。
嗯你用的是虚虚拟机还是物理机妈
这个问题其实是因为陷入了一个误区,只有在外部调用的时候才需要处理,方法是路由转发。而建立一次用户和管道的map以后,本次聊天都在这个服务上是没有问题说的那种情况的,所以不用考虑将userId和channerl的对应关系保存到分布式缓存。