3

少し広すぎるかもしれないので、この質問がここに属しているかどうかはわかりません。もしそうなら、私はお詫び申し上げます。とにかく、私はPythonでプロジェクトを開始することを計画しており、それを実装する最善の方法、または実際的な方法で可能かどうかを理解しようとしています. システムは、いくつかの「ノード」で構成されます。これらのノードは基本的に、I/O、制御用のリレー、測定用の入力、rfid リーダーなどに関連するさまざまな種類のハードウェアと通信するための他のプロトコルを変換する Python スクリプトです。私のシステムのために。私はプログラミングやネットワークの専門家ではありませんが、この部分は処理できます。rs-485 を使用する古いアラーム システムのモジュールを使用しており、これを正常に制御して読み取ることができます。ノードをネットワーク経由で相互に通信させて、ノードを別の場所 (今のところ同じサブネット上) に分散できるようにしたいと考えています。明らかな方法は、それらがすべて接続するサーバーを使用して、ポーリングし、出力を反転するか、何か他のことを行う命令を取得できるようにすることです。これは、ツイストなどを使用しても難しくありません。

これに関する問題は、何らかの理由でこのサーバーが機能しなくなった場合、他のすべても機能しなくなることです。私が望むのは、ネットワーク自体以外に単一障害点がない、ある種のサーバーレス通信だと思います。メッセージブローカーはすべて何らかのサーバーを必要とするようですが、これに適していると思われるものは他にありません。ドアがすでに開いている場合はこのドアを開けないなど、他のノードに接続されているもののステータスに基づいて機能を作成できるようにする必要があるため、すべてのノードは他のすべてのノードのステータスを認識している必要があります。おそらくこれはマルチキャストまたはブロードキャストによって実行できますが、それは少し安全ではないようで、正しくありません。私が考えた1つの方法は、ノードの1つを他のノードからの接続を受け入れるように指定し、メッセージルーターとして機能させ、何らかのバックアップを手配して、このノードがクラッシュしたり離れたりした場合に、別の所定のノードが引き継ぎ、代わりに他のノードがそれに接続します。これは複雑に思えますが、これがメッセージ ブローカーを使用するよりも優れているかどうかはわかりません。

私が言ったように、これがここでの適切な質問かどうかはわかりませんが、誰かがこれをどのように行うことができるかについてのヒントを与えることができるか、または私が研究できるこれと同様のことをする何かがあるかどうか. 私が愚かな場合は、それも教えてください:)

4

2 に答える 2

1

中央のメッセージ ブローカーを必要としないメッセージング システムがあります。まず、ZeroMQ を調べることから始めてください。

于 2013-05-09T02:34:52.693 に答える
1

最終的に、Python で独自のサーバーレス メッセージング システムを作成しました。準備ができておらず、コードがごちゃごちゃしていますが、動作します。ノードの自動検出、チャネルとトピックの共有、および必要な機能が備わっています。誰かがそれを使用することに興味がある場合、または支援したい場合は、ここにあります:

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

于 2013-12-07T16:50:41.057 に答える