netty-websocket-cluster
github: https://github.com/czqclm/netty-websocket-cluster
解决 websocket 集群部署的问题 技术栈
netty websocket rabbitMq redis nacos gateway
架构对比
传统 websocket
负载均衡 websocket
netty-websocket-cluster
分布式集群 websocket
netty-websocket-cluster
流程图
服务注册与启动
客户端建立连接
推送消息给某个用户(1 对 1)
此处消息 DTO 用于在服务间传递
public class MsgDTO {
private Object content;
private Boolean allUser;
private List<User> targetUserList;
}
推送消息给所有用户(或者一批用户)
多节点追求高性能调整
上述模式都使用了 rabbitMq
的 fanout
来广播消息到每个 server_node
,消费者来自行处理有则发送无则抛弃。在节点较多的情况下会产生大量冗余消息,造成性能问题。以下方案可以解决,那就是依据 #客户端建立连接 中存储的用户与节点的关系,来判断真正的消费者是哪个 server_node