3

我不确定这个问题是否属于这里,因为它可能有点宽泛。如果是这样,我很抱歉。无论如何,我打算在 python 中启动一个项目,我正在尝试找出如何最好地实现它,或者是否可以以任何实际的方式实现它。该系统将由几个“节点”组成,这些“节点”本质上是 Python 脚本,它们将其他协议转换为与 I/O 相关的不同类型硬件、控制东西的继电器、测量东西的输入、rfid 阅读器等,到一个通用协议对于我的系统。我不是编程或网络专家,但这部分我可以处理,我有一个来自旧警报系统的模块,它使用 rs-485,我可以成功控制和读取。我想让节点通过网络相互交谈,这样我就可以将它们分发到不同的位置(现在在同一个子网上)。显而易见的方法是使用他们都连接到的服务器,这样他们就可以被轮询并获得订单来翻转输出或做其他事情。使用扭曲或类似的东西应该不会太难。

这样做的问题是,如果该服务器由于某种原因停止工作,其他一切也会停止工作。我想我想要的是某种无服务器通信,除了网络本身之外没有单点故障。消息代理似乎都需要某种服务器,而我真的找不到其他适合此的东西。所有节点都必须知道所有其他节点的状态,因为我需要能够根据连接到其他节点的事物的状态来执行功能,例如,如果那扇门已经打开,则不要打开这扇门。也许这可以通过多播或广播来完成,但这似乎有点不安全而且不正确。我想到的一种方法可能是以某种方式指定其中一个节点接受来自其他节点的连接并充当消息路由器并安排某种备份,以便如果该节点崩溃或消失,另一个预定节点接管并其他节点改为连接到它。这似乎很复杂,我不确定这是否比仅使用消息代理更好。

正如我所说,我不确定这是一个合适的问题,但如果有人可以给我一个提示,告诉我如何做到这一点,或者是否有类似的事情我可以研究。如果我很愚蠢,请也告诉我:)

4

2 回答 2

1

我最终在 python 中制作了自己的无服务器消息传递系统。它还没有准备好,代码很乱,但它可以工作。它具有节点的自动发现、频道和主题的共享以及我需要的功能。如果有人有兴趣使用它或想提供帮助,请点击此处:

https://bitbucket.org/ssspeq/connection-manager

于 2013-12-07T16:50:41.057 回答
1

有些消息传递系统不需要中央消息代理。您可以从查看 ZeroMQ 开始。

于 2013-05-09T02:34:52.693 回答