1
linbiaye 2021-05-18 09:44:07 +08:00
这么奇怪的问题,A 机器建立的连接<b>不可能</b>序列化一下,存到 redis,然后 B 机器捞出来反序列化然后就通过连接发数据了。唯一的解法就是给客户端唯一标示,链接建立完了让客户端报自己的标示,然后存到 redis,<标示,我的链接在 A 机器>,然后需要给客户端发消息的给 A 机器发消息,让 A 去做。
|
2
xinQing 2021-05-31 09:57:29 +08:00
哈哈,这个我来发个言。我 17 年刚毕业那会儿做基于 websocket ( netty 实现)的连接助手,有 4 台机器( A 、B 、C 、D )。思路是每台机器管理自己的连接。
比如:A 上面有 1,2,3,4 ; B 上面有 5,6,7,8 的连接。当 1 需要给 8 发消息,此时 1 的消息肯定是先发给 A (建立了连接)了,存储消息后,然后 A 发现 8 不再自己的机器上,将消息发给 redis (利用 redis 的发布订阅机器,每台机器都订阅)。A 、B 、C 、D 都收到了消息,D 发现自己上面有 8 的连接,则将消息转发给 8 。 当时做的比较简单,没有做针对性的机器间通讯(利用 redis 、zk 等做全局路由表),比如 A 发现 8 在 D 机器上,直接调用 D 的 rpc 接口。 |