websocket多实例推送解决方案-数据实时展示

科技资讯 投稿 6000 0 评论

websocket多实例推送解决方案-数据实时展示

需求

思路方案

前端使用websocket 建立通信  

现状及问题

由于客户端与服务端websocket连接,是单台服务器建立通道,数据库变更到服务器消费,只会是其中一台服务器消费,其他服务器消费不到,导致其他服务器连接的客户端,接收不到实时的数据。

解决方案

方案名

优缺点

redis+定时

所有服务器都启动一个定时器,定时遍历redis中需要推送的,根据当前服务器socket的连接,推送对应客户端

缺点:

每台服务器都遍历一次所有的数据,资源浪费

kafka多个消费组

优点:广播形式,推送到所有服务器,实时性有保证,消息不易丢失

每台服务器都消费所有数据,资源浪费

rocketMq队列

优点:广播形式,推送到所有服务器,实时性有保证,消息不易丢失

每台服务器都消费所有数据,资源浪费

1、接收到数据库变更信息后,发送mq

redis发布订阅

当某个服务器得到数据库变更时,在redis里存好实时数据,然后再在redis频道发送变更的key

优点:redis广播,实时性有保证,轻量,易实现

每台服务器都消费所有数据,资源浪费

1、增加redis订阅频道

方案流程图

优化

后记

参考

websocket 详解:https://blog.csdn.net/weixin_50339217/article/details/125160323

监听数据库变化参考:

https://blog.csdn.net/qq_45821251/article/details/127490460

前端实时更新数据的几种方式:https://www.jianshu.com/p/b7b363e5352a

编程笔记 » websocket多实例推送解决方案-数据实时展示

赞同 (30) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽