swoole websocket server集群怎么做?

1,swoole websocket集群如何做到自动轮换,保证可靠性
2,swoole websocket server集群中,如何让 server1 的client A 向 server2 的 client B 推送 信息?

慕哥9229398
浏览 977回答 7
7回答

绝地无双

首先,感谢各位技术专家提供的答案和思路,?。 实际中我发现原生Swoole对Cluster并不支持,然后研究了蛮久的SwooleDistributed,但是它需要配合Consul,这个配置也是及其麻烦的,最终都放弃了,选择了原生支持Cluster的Workman,支持异步MySQL,异步Redis,暂时项目就是用这个,后期也会继续跟进Swoole对Cluster的支持。 感谢各位!

哈士奇WWW

谢邀 .首先说下我自己是没有搞过ws集群的 , 不过有兴趣回答一下 .一般说来 , 无论是tcp还是ws(当然ws本质上就是tcp)将信息主动push出去 , 靠的是fd文件描述符 . server1的clientA应该是在server1上有自己的文件描述符 , server2的clientB在server2上也有自己的文件描述符 . 这个你应该是明白的 . 我认为你是可以通过某种方案来确定"ClientA的长链接在server1上,clientB的长链接在server2上"的 , 比如你可以通过hash或者uid取余这种方式来确定某个用户将会与某个服务器建立长链接 . 只要这点确定了 , 你就可以将"发送给clientB的消息"也通过这个方式来落到clientB建立长链接的服务器上 , 然后这会儿你就可以很自然的通过这台服务器利用fd将消息push给clientB了. 应该会有更好的解决方案 . 关注.

慕村225694

uid+serverip+fd是否可以实现?

慕娘9325324

clientA --> server1 | send msg to clientB server1 | Find clientB at server2 (hash / radis / broadcast) server1 | connect server2 as websocket client server1 --> server2 | msg to clientB from clientA server2 --> clientB | receive msg from clientA 同服务器消息 和 不同服务器消息 结构上应该是不同的类似魔兽跨服务器消息 [from A:to B:msg] A(server1) => B(server1) [from A@1:to B@2:msg] A(server1) => B(server2)
打开App,查看更多内容
随时随地看视频慕课网APP