2

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

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

解决方案考虑:

  • 电子邮件 - 通过建立独立的或共享的免费电子邮件帐户(例如Gmail帐户),每个客户端连接到使用IMAP/SMTP
  • 谷歌文档 - 使用一个共享的在线电子表格(如谷歌文档),以及使用轮询机制使用到第三方服务器的连接
  • 基于XMPP协议访问/改变细胞的一些Python库
  • IRC
  • 租用便宜5 $ VPS和设置转发通过SSH一零MQ发布 - 订阅节点(或任何其他协议),并且具有所有节点连接到它

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

我知道建立我自己的消息代理(RabbitMQ,Mosquito)等的解决方案,并使其可以以某种方式访问​​我的节点(ssh-forwarding到第三个主机等)。但我的问题主要是关于任何不需要我这样做的解决方案,即任何利用已有的/可访问的第三方基础设施的解决方案。 (即是否有任何公共消息中间人可以使用?)

回答

0

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

0

Mosquitto :实现MQ Telemetry传输协议版本3.1和3.1.1的消息代理。 MQTT提供了使用发布/订阅模型执行消息传递的轻量级方法。这使它适用于“机器对机器”消息。它支持加密。设置时间:大概15分钟后,您应该启动并运行。由于它是一个消息代理,您可以编写自己的代码以确保您可以与第三方解决方案进行通信。此外,它实现了软实时性,但取决于您的设置,您可以实时实现硬实时。看看Mosquitto后,您可以看看Paho,这是一个从蚊子到Eclipse基金会的港口。

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

0

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