消息队列服务器是否应直接面向Internet?

时间:2015-01-08 16:27:24

标签: message-queue mqtt

我有以下用例:

  • 邮件大小:~4kb
  • 协议类型:考虑MQTT
  • 消息队列服务器:考虑RabbitMQ或Mosquitto
  • 高达50k msg / s到达消息
  • 每条消息都是从具有各种网络连接的移动客户端发送的

我想知道的是:如何让系统更好地摄取消息?

A)将消息队列服务器直接暴露给Internet,稍后处理消息的一致性/有效性(当然还有服务器前面的负载均衡器)

B)公开可以以本机格式读取消息的服务器,应用一些基本的有效性检查,然后将消息排队到内部消息队列服务器

我倾向于第二种选择,但我没有真正的争论,因为它与第一种选择相比,所以你能就这一个提出建议吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

你的问题有两个部分:

  1. 是否将消息队列服务器公开给互联网
  2. 是否立即处理消息
  3. 对于第一个问题,我建议将服务器置于防火墙之后。因此,您将拥有更多工具来保护您的服务器免受Internet攻击。

    对于第二个问题,它取决于服务器是否需要通知移动设备有关消息处理结果以及是否应立即知道消息处理的结果:

    1. 如果您不需要向移动设备发送反馈并且不需要立即执行消息处理的结果,我建议记录消息,然后以批处理模式处理它,
    2. 如果您需要向移动设备发送反馈,但邮件不需要立即处理,我建议您对邮件执行完整性检查,然后将反馈发送回移动设备记录批处理消息,
    3. 否则,我会建议执行完整性检查,处理消息并将反馈发送回移动设备。
    4. 在我的建议中,我建议尽可能在在线模式下使用批处理模式。当您以批处理模式运行时,您可以通过一种简单的方式有效地使用计算资源。