前言
书接上文(手把手教你使用WebSocket搭建多人在线聊天室),我们开始对我们的小小聊天室进行集群化改造。
本文内容摘要:
- 为何要改造为分布式集群
- 如何改造为分布式集群
- 用户在聊天室集群如何发消息
- 用户在聊天室集群如何接收消息
- 补充知识点:STOMP 简介
- 功能一:向聊天室集群中的全体用户发消息——Redis的订阅/发布
- 功能二:集群集群用户上下线通知——Redis订阅发布
- 功能三:集群用户信息维护——Redis集合
- WebSocket集群还有哪些可能性
本文源码:(妈妈再也不用担心我无法复现文章代码啦)
https://github.com/qqxx6661/springboot-websocket-demo/releases/tag/%E9%9B%86%E7%BE%A4%E7%89%88
如果您觉得这个教程对您有用,请关注我的技术公众号:Rude3Knife,不定时更新技术点滴。
正文
WebSocket集群/分布式改造:实现多人在线聊天室
为何要改造为分布式集群
分布式就是为了解决单点故障问题,想象一下,如果一个服务器承载了1000个大佬同时聊天,服务器突然挂了,1000个大佬瞬间全部掉线,大概明天你就被大佬们吊起来打了。
当聊天室改为集群后,就算服务器A挂了,服务器B上聊天的大佬们还可以愉快的聊天,并且在前端还能通过代码,让连接A的大佬们快速重连至存活的服务器B,继续和大家愉快的聊天,岂不美哉!
总结一下:实现了分布式WebSocket后,我们可以将流量负载均衡到不同的服务器上并提供一种通信机制让各个服务器能进行消息同步(不然用户A连上服务器A,用户B脸上服务器B,它们发消息的时候对方都没法收到)。
如何改造为分布式集群
当我们要实现分布式的时候,我们则需要在各个机器上共享这些信息,所以我们需要一个Publish/Subscribe的中间件。我们现在使用Redis作为我们的解决方案。
1. 用户在聊天室集群如何发消息
假设我们的聊天室集群有服务器A和B,用户Alice连接在A上,Bob连接在B上、
Ali