分布式系统中消息传递的简单方法

Simple way for message passing in distributed system

我正在实施一个小型分布式系统(在 Python 中),节点位于防火墙后面。在以下限制下,在节点之间传递消息的最简单方法是什么:

  1. 我不想在防火墙中打开任何端口或打孔
  2. 另外,我不想 export/forward 我网络外的任何内部端口
  3. 时间延迟少于 5 分钟是可以接受的,但如果可能的话,更接近实时会更好。
  4. 1+2 → 我需要使用第三方,我的所有节点都可以访问。由此可见,我可能还想使用加密

考虑的解决方案:

是否有任何其他 public(免费)可用的可访问消息队列(或可被滥用为消息队列的平台)?

我知道设置我自己的消息代理(RabbitMQ、Mosquito)等的解决方案,并以某种方式使我的节点可以访问它(ssh 转发到第三个主机等)。但我的问题主要是关于不需要我这样做的任何解决方案,即任何已经利用 available/accessible 第三方基础设施的解决方案。 (即是否有任何 public 我可以使用的消息代理?)

我会推荐 RabbitMQ 或 Redis(首选 RabbitMQ,因为它是一项非常成熟的技术并且极其可靠)。如果您想要单跳消息系统而不是代理消息系统(例如 RabbitMQ),ZMQ 是一个选项,但 ZMQ 比 RabbitMQ 更难使用。取决于你想如何利用消息传递(它是一个任务调度,在这种情况下你可以使用 Celery,或者如果你需要稍微低级的访问,在这种情况下使用 Kombu 和 librabbitmq 传输)

Mosquitto: message broker that implements the MQ Telemetry Transport protocol versions 3.1 and 3.1.1. MQTT provides a lightweight method of carrying out messaging using a publish/subscribe model. This makes it suitable for "machine to machine" messaging. It supports encryption. Time to setup: approximatively 15 mins you should be up and running. Since it is a message broker, you can write your own code to ensure you can communicate with 3rd party solutions. Also, it achieves soft real-time, but depending on your setup you can achieve hard real-time. After you look into Mosquitto have a look at Paho 怎么样,它是 Mosquito 到 Eclipse Foundation 的端口。

Paho 还提供了一个 Python 客户端,它在 Python 2.7 或 3.x 上支持 MQTT v3.1 和 v3.1.1。它还提供了一些辅助函数,使向 MQTT 服务器发布一条消息变得非常简单。大量文档和示例可助您一臂之力 运行.

找到 https://www.cloudamqp.com/,它提供了基于云的 RabbitMQ 安装的免费计划。我会试试看它是否满足我的需求。