上下文:操作系统:Linux(Ubuntu),语言:C(实际上是Lua,但这应该不重要).
我更喜欢基于ZeroMQ的解决方案,但会接受任何足够的理智.
注意:由于技术原因,我不能在这里使用POSIX信号.
我在一台机器上有几个相同的长寿命流程("工人").
我不时需要通过命令行工具向每个进程传递控制消息.例:
$ command-and-control worker-type run-collect-garbage
本机上的每个工作人员都应收到一条run-collect-garbage消息.注意:如果解决方案在某种程度上适用于集群中所有计算机上的所有工作程序,那将是完美的,但我可以自己编写该部分.
如果我将存储有关正在运行的工作人员的一些信息,这很容易做 例如,将它们的PID保存在已知位置,并在已知路径上打开控制Unix域套接字,其中包含PID.或者打开TCP套接字并在某处存储主机和端口.
但这需要仔细管理存储的信息 - 例如,如果工人流程突然死亡会怎么样?(没有什么是难以管理的,但是,仍然,额外的大惊小怪.)此外,信息需要存储在某个地方,从而增加了额外的复杂性.
在PUB/SUB风格中有一个很好的方法吗?也就是说,工作者是订阅者,命令和控制工具是一个发布者,他们所知道的只是一个"频道网址",所以说,要发送消息.
其他要求:
通常,这种模式需要发布者的代理,即您发送到代理,该代理立即接受交付,然后可靠地转发到最终订阅者工作人员。ZeroMQ 指南涵盖了实现此目的的几种不同方法。
http://zguide.zeromq.org/page:all
| 归档时间: |
|
| 查看次数: |
1330 次 |
| 最近记录: |