2010-12-02 5 views
0

私は現在、TCPを介してリモートコマンドを受信し、子プロセスに何をすべきかを伝える「マスター」プロセスの制御下で実行されている多くのプロセスを必要とするプロジェクトに取り組んでいます彼らはどの処理操作を実行すべきか)を実行する必要があります。Linuxのリモートプロセスコントロール

私は子プロセスに至るまでのコマンド/設定を渡すために、次のアイデアを作ってみた:

  • 信号(十分強力ではない)
  • に各プロセスを接続するソケットやパイプの上にバイナリプロトコルマスター(ホイールを改造する)。
  • RPC(多分やり過ぎ)
  • CORBA(多分やり過ぎ)
  • DDS(完全にやり過ぎ)

任意のアイデア/提案ですか?

+0

どの言語が実装されていますか?プロセスの代わりにスレッドを使用する方が簡単です。言語に応じて共有メモリ。 – GinoA

+0

また、ファイルやhttp://en.wikipedia.org/wiki/Message_queueを使用することもできます – Drakosha

+0

私は古い良いCとstatyを検討していますが、imlpementationはおそらくC + +になるでしょう。 – cyberguijarro

答えて

0

パイプによるテキストプロトコルはどうですか?

テキストプロトコルは、テストが容易であり、テストが容易であることから一般的にバグが少なくなるため、バイナリプロトコルより常に優れています。

0

メッセージキューや共有メモリをセマフォと併用することもできます。

また、メッセージをサブスクリプションキューなどにディスパッチできるActiveMQというApacheプロジェクトを調べることもできます。非常に強力で柔軟性があり、Cインターフェイスがあります。メッセージを送信する必要のあるマシン/ネットワークが多数ある場合に理想的です。

http://activemq.apache.org/

0

beanstalkdまたはresqueなどの軽量なメッセージキューは、複雑さの適切なレベルのように思えます。 inotifyを使ったファイルも使えます。 inotifyはイベントキューとして設計されています。あなたはhttpを使用するので、それを焼く前にincrontabで試すことができます。{xml、json} -rpcは(少し)複雑ですが、より標準的です。ただし、非ブロック・インタラクションの場合は、メッセージ・キューのメタファーがrpcよりも適切です。

0

supervisordツールが便利です。これは、ユーザーがUNIXライクなオペレーティングシステム上の多くのプロセスを監視および制御できるようにするクライアント/サーバーシステムです。