分布式系统中消息传递的简单方法
Simple way for message passing in distributed system
我正在实施一个小型分布式系统(在 Python 中),节点位于防火墙后面。在以下限制下,在节点之间传递消息的最简单方法是什么:
- 我不想在防火墙中打开任何端口或打孔
- 另外,我不想 export/forward 我网络外的任何内部端口
- 时间延迟少于 5 分钟是可以接受的,但如果可能的话,更接近实时会更好。
- 1+2 → 我需要使用第三方,我的所有节点都可以访问。由此可见,我可能还想使用加密
考虑的解决方案:
- 电子邮件 - 通过设置每个客户端使用 IMAP/SMTP
连接的单独或共享的免费电子邮件帐户(例如 Gmail)
- Google 文档 - 使用共享的在线电子表格(例如 Google 文档)和一些 python 库 accessing/changing 单元格使用轮询机制
- XMPP 使用与第三方服务器的连接
- IRC
- 租用便宜的 5 美元 VPS 并设置一个零 MQ 发布-订阅节点(或任何其他协议)通过 SSH 转发并让所有节点连接到它
是否有任何其他 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 安装的免费计划。我会试试看它是否满足我的需求。
我正在实施一个小型分布式系统(在 Python 中),节点位于防火墙后面。在以下限制下,在节点之间传递消息的最简单方法是什么:
- 我不想在防火墙中打开任何端口或打孔
- 另外,我不想 export/forward 我网络外的任何内部端口
- 时间延迟少于 5 分钟是可以接受的,但如果可能的话,更接近实时会更好。
- 1+2 → 我需要使用第三方,我的所有节点都可以访问。由此可见,我可能还想使用加密
考虑的解决方案:
- 电子邮件 - 通过设置每个客户端使用 IMAP/SMTP 连接的单独或共享的免费电子邮件帐户(例如 Gmail)
- Google 文档 - 使用共享的在线电子表格(例如 Google 文档)和一些 python 库 accessing/changing 单元格使用轮询机制
- XMPP 使用与第三方服务器的连接
- IRC
- 租用便宜的 5 美元 VPS 并设置一个零 MQ 发布-订阅节点(或任何其他协议)通过 SSH 转发并让所有节点连接到它
是否有任何其他 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 安装的免费计划。我会试试看它是否满足我的需求。