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

时间:2015-04-27 17:15:35

标签: python message-queue messaging distributed distributed-system

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

  1. 我不想在防火墙上打开任何端口或打孔
  2. 另外,我不想导出/转发网络外的任何内部端口
  3. 时间延迟小于5分钟是可以接受的,但如果可能的话,接近实时会很好。
  4. 1 + 2→我需要使用第三方,我的所有节点都可以访问。由此可见,我可能也想使用加密
  5. 考虑的解决方案:

    • 电子邮件 - 设置每个客户端使用IMAP / SMTP连接的单独或共享免费电子邮件帐户(例如Gmail)
    • Google文档 - 使用共享的在线电子表格(例如Google文档)和一些python库,使用轮询机制访问/更改单元格
    • 使用与第三方服务器的连接的XMPP
    • IRC
    • 租用便宜的5 $ VPS并设置通过SSH转发并使所有节点连接到它的Zero-MQ发布 - 订阅节点(或任何其他协议)

    是否有其他可用的公共(免费)可访问消息队列(或可被误用为消息队列的平台)?

    我知道设置我自己的消息代理(RabbitMQ,Mosquito)等的解决方案,并以某种方式让我的节点可以访问它(ssh-forwardning到第三个主机等)。但我的问题主要是关于任何不要求我这样做的解决方案,即任何利用已经可用/可访问的第三方基础设施的解决方案。 (即我可以使用任何公共信息经纪人吗?)

3 个答案:

答案 0 :(得分:1)

Mosquitto:实现MQ遥测传输协议版本3.1和3.1.1的消息代理如何。 MQTT提供了一种使用发布/订阅模型执行消息传递的轻量级方法。这使它适用于机器加工"消息。它支持加密。设置时间:大约15分钟你应该启动并运行。由于它是消息代理,因此您可以编写自己的代码以确保可以与第三方解决方案进行通信。此外,它实现了软实时,但根据您的设置,您可以实现硬实时。看了Mosquitto后,看看Paho,这是Eclipse基金会的Mosquito的一个端口。

Paho还提供了一个Python客户端,它支持Python 2.7或3.x上的MQTT v3.1和v3.1.1。它还提供了一些帮助函数,可以非常直接地向MQTT服务器发布一条消息。大量文档和示例可帮助您开始运行。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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