web集群部署(实例大于等于2个),nginx作为中间件时候,后端websocket有时候消息无法传递给客户端

1 篇文章 0 订阅
1 篇文章 0 订阅

最近公司有一个需求:新订单需要及时提醒到后台管理者,基于这一点我决定采用Websocket来实现。

当我把项目部署到生产环境的时候发现一个问题:

建立了Websocket连接后,每当有新的订单发起,客户端都会受到新订单提醒。这时候就遇到一个问题,新订单进来之后 客户端有时候会有提醒 有时候却没有提醒,并且 Websocket 状态一直是开启。


经过一系列排查发现,我的web项目做了 集群部署 分别占用 8500,8501,8502 端口 ,客户端请求nginx的时候  会随机分配一个 实例 进行websocket 连接。在这种情况下  如果客户端的连接 不是和一开始建立连接的实例一样的话,是监听不到消息的。

因此我的解决方案是  修改nginx 的轮询策略 ,改为 ip_hash,一个ip的用户就分到指定的一台实例。


如果有大佬有更好的解决方案 请留言


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值