websocket集群方案实战(非MQ)

websocket集群方案实战(非MQ)

  • 本文websocket方案实现原理基于nginx代理,dubbo自定义负载均衡策略实现。
  • websocket
  • 关于websocket的session
  • 集群方案
    • 1、MQ广播形式:
    • 2、自定义负载均衡
      • 登录时用户所在的服务器写入redis,略。
      • 自定义dubb负载均衡:
      • 配置到WEB-INF/dubbo下。
      • 调用方式指定负载均衡。
      • 发送消息代码示例。
      • nginx代理websocket,以及普通接口
      • 运行测试结果:
  • 本文侧重与对websocket集群方案(非MQ实现)做了个简单实例,当用户一对一聊天时这种方式实时高效、节省资源。如果是群聊的话,还是采用mq广播形式更好些。项目中可以采用两者结合。

本文websocket方案实现原理基于nginx代理,dubbo自定义负载均衡策略实现。

websocket

双向通信的特性,使得它常用来做及时通讯,聊天工具。

关于websocket的session

websocket的session比较特殊,可以认为是一个有状态的,当浏览器刷新,就会断掉,无法实现共享。相反httpsession基于cookie实现,只要cookie存在,httpsession就能实现共享。

集群方案

1、MQ广播形式:

因为websocket的session无法共享问题,使得集群方案有些特殊。大家最容易想到的是可以通过MQ 广播的形式,向集群每个节点发消息,然后每个节点判断是否有需要toUser,有的话就发送,没有的话就放弃消息。这种方式实现比较简单,但缺点也很明显:存在异步延迟。如果MQ消息积压的话就很坑,就算没积压,MQ本

你可能感兴趣的:(websocket,java,dubbo)