netty-websocket-cluster

github: https://github.com/czqclm/netty-websocket-cluster

解决 websocket 集群部署的问题 技术栈

netty websocket rabbitMq redis nacos gateway

架构对比

传统 websocket

image-20221031172750222

负载均衡 websocket

image-20221031180011642

netty-websocket-cluster 分布式集群 websocket

image-20221031180111174

netty-websocket-cluster 流程图

服务注册与启动

image-1667455540617

客户端建立连接

image-1667455586183

推送消息给某个用户(1 对 1)

image-1667455602321

此处消息 DTO 用于在服务间传递

public class MsgDTO {
    private Object content;
    private Boolean allUser;
    private List<User> targetUserList;
}

推送消息给所有用户(或者一批用户)

image-1667455628835

多节点追求高性能调整

上述模式都使用了 rabbitMqfanout 来广播消息到每个 server_node ,消费者来自行处理有则发送无则抛弃。在节点较多的情况下会产生大量冗余消息,造成性能问题。以下方案可以解决,那就是依据 #客户端建立连接 中存储的用户与节点的关系,来判断真正的消费者是哪个 server_node image-1667455648918