2010-12-02 48 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操作系统上的大量进程。