发生背景
使用websocket + netty-socketio + MQ实现一个简易在线聊天系统,可以支撑每天10w用户在线聊天。
实现原理
websocket作为主要的信息发送渠道,后端存储socket句柄,MQ作为集群环境下寻找会话两端绑定句柄的媒介,相信用过此思路的朋友应该明白整个架构了,要是不明白呢,请看下面分解
图文并茂
1、上图当A给B发消息时,消息里面一定是包含A给B发消息这个信息。问题:程序如何把这个消息发送给B?
分析:A给B发消息,首先这个消息肯定是落在集群1节点,现在我们知道B在集群4节点,那么问题就变成怎么把集群1的消息送到送到集群4节点?
2、MQ的作用,消息广播,所有服务器来接收A的消息,来寻找目标句柄B,找不到就丢弃消息,蠢萌蠢萌的方案就解决了该问题。如下图:
3、那么问题就来了,有什么更优的方案,直接找到B所在的集群4节点呢