使用Redis发布高流量数据

时间:2018-12-23 04:52:12

标签: redis rabbitmq memcached message-queue zeromq

我正在寻找以下用例的实用解决方案:

我有500多个GPS跟踪设备将消息发送到服务器。每个设备每5到60秒发送1条消息。然后,我有了一个Web服务器,该服务器应该能够提供跟踪设备的位置。如果用户拥有4台设备,则他或她应该能够看到所有4台设备的位置。

我的解决方案当前使用的是Perl6,Redis和MongoDB编写的异步套接字服务器的组合。套接字服务器侦听500多个设备,然后将接收到的消息推送到Redis,并同时发布它。然后,我有一个单独的脚本,该脚本每2小时运行一次,以将Redis数据转储到.rdb文件,将文件解析为JSON格式并将其转储到MongoDB。这样做的原因是为了避免MongoDB上的瓶颈。 Web服务器订阅Redis通道,grep用户所需的唯一消息,然后使用Websocket将其发送到浏览器。但是我猜测从大量邮件中仅提取少量邮件并不是一个好主意。

我正在考虑根据设备ID将消息发布到单独的频道,Web服务器只需要订阅属于用户的频道,而不是订阅单个频道,但是我不确定如何这会影响服务器资源。

另一个问题是,对于这种流量,我应该使用Redis集群而不是独立的Redis吗?还是我根本不应该使用Redis并使用RabbitMQ或0MQ这样的知名消息队列?

我当前的服务器有2个核心CPU和4GB RAM。

谢谢!

0 个答案:

没有答案