Netty如何做负载均衡(集群)架构

来源:2-1 IO通信

Pumbaa_P2Ng

2019-06-24 22:39

背景:

通过SpringBoot + Netty搭建应用作为IM服务,SpringBoot提供IM业务接口,启动SpringBoot的时候另外起一条线程启动Netty框架,作为WebSocket链接地址。

 

现在问题是:

例如A客户端跟www.im.xxx.com/ws创建WebSocket链接的时候,与A服务端进行长链接。B客户端跟B服务端进行长链接。

那么在A与B之间发送文本信息(聊天内容,Hello World),A服务端无法转发到B服务端...因为他们的Channel没有共享...

 

那么通过什么方式可以使应用HA(高可用,集群,非单点)???

0339848381e01a273bf1a74595b775a0836.jpg

写回答 关注

3回答

  • 慕UI0465313
    2019-10-09 17:59:43

    这里需要用到redis的消息发布和订阅。当客户端A和服务器1建立netty连接时,根据当前连接的管道名称进行redis消息订阅,假设客户端A和服务器1之间的管道名称为A1。当客户端B连接到服务器2又想与服务器1通信时,客户端B可以根据A1向redis发布消息,因为在这之前服务器1已经消息订阅了A1,这样服务器1就可以接收到客户端B的消息。

  • 有理想的程序员
    2019-08-17 15:49:10

    回头你确定了也给我说下

  • 有理想的程序员
    2019-08-17 15:01:40

    我们公司也在用这个,我也还在追寻这块原理。他们说创建连接后,把连接保存到Redis中,通过NGINX做高可用

Netty入门之WebSocket初体验

由浅入深了解Java高性能NIO通信首选框架——Netty

29324 学习 · 63 问题

查看课程

相似问题