2010-12-02 47 views
0

我目前正在開發一個需要大量進程在「主」進程控制下運行的項目,該進程通過TCP接收遠程命令並告知子進程要做什麼(例如:哪些文件他們應該採取行動,他們應該執行哪些處理操作)。Linux中的遠程過程控制

我已經想出以下的思路來傳遞命令/配置下到子進程:

  • 信號(不夠強大)
  • 二進制協議通過燈座或管連接每一個過程到主人(重新發明輪子)。
  • RPC(可能矯枉過正)
  • CORBA(也許是矯枉過正)
  • DDS(完全矯枉過正)

任何意見/建議嗎?

+0

什麼語言在實現?使用線程而不是進程可能會更簡單。或取決於語言的共享內存。 – GinoA 2010-12-02 18:56:35

回答

0

如何通過管道的文本協議?

文本協議總是比二進制協議更好,因爲它們更容易測試,而且更簡單的測試通常意味着更少的錯誤。

0

您也可以使用消息隊列或共享內存與信號量。

您還可以查看一個名爲ActiveMQ的Apache項目,該項目允許將消息分派到訂閱隊列等。它非常強大且靈活,並且有C接口。如果您有許多需要發送消息的機器/網絡,它是理想的選擇。

http://activemq.apache.org/

0

像beanstalkd或resque輕量級消息隊列好像複雜的正確的水平。帶有inotify的文件也可以工作; inotify被設計爲一個事件隊列。您可以在使用incrontab進行試用之前嘗試它。{xml,json} -rpc(稍微)更復雜,但也更標準,因爲它們使用http。但是,對於非阻塞交互,消息隊列隱喻比rpc更合適。

0

supervisord工具可能會有用。這是一個客戶端/服務器系統,它允許用戶監視和控制類UNIX操作系統上的大量進程。