linux – PUBSUB,短期发布者和长期订阅者

linux – PUBSUB,短期发布者和长期订阅者,第1张

概述上下文: *** 作系统: Linux(Ubuntu),语言:C(实际上是Lua,但这应该不重要). 我更喜欢基于ZeroMQ的解决方案,但会接受任何足够的理智. 注意:由于技术原因,我不能在这里使用POSIX信号. 我在一台机器上有几个相同的长寿命过程(“工人”). 我不时需要通过命令行工具向每个进程传递控制消息.例: $command-and-control worker-type run-coll 上下文: *** 作系统: Linux(Ubuntu),语言:C(实际上是Lua,但这应该不重要).

我更喜欢基于ZeroMQ的解决方案,但会接受任何足够的理智.

注意:由于技术原因,我不能在这里使用POSIX信号.

我在一台机器上有几个相同的长寿命过程(“工人”).

我不时需要通过命令行工具向每个进程传递控制消息.例:

$command-and-control worker-type run-collect-garbage

这台机器上的每个工作人员都应该收到一个run-collect-garbage消息.注意:如果解决方案以某种方式适用于集群中所有计算机上的所有工作程序,那将是完美的,但我可以自己编写该部分.

如果我将存储有关正在运行的工作人员的一些信息,这很容易做例如,将它们的PID保存在已知位置,并在已知路径上打开控制Unix域套接字,其中包含PID.或者打开TCP套接字并在某处存储主机和端口.

但这需要仔细管理存储的信息 – 例如如果工人过程突然死亡怎么办? (没有什么是难以管理的,但是,仍然是额外的大惊小怪.)此外,信息需要存储在某个地方,从而增加了额外的复杂性.

在PUB / SUB风格中有一个很好的方法吗?也就是说,工作者是订阅者,命令和控制工具是一个发布者,他们所知道的只是一个“频道网址”,也就是说,消息的来源.

其他要求:

>发送到控制通道的消息必须从轮询中唤醒工作人员(选择,等等)
环.
>必须保证邮件传递,并且必须覆盖正在收听的每个工作人员.
>工作者应该有一种方法来监视消息而不会阻塞 – 理想情况下是通过上面提到的poll / select / whatever循环.
>理想情况下,工作进程在某种意义上应该是“服务器” – 他不应该担心保持与“通道服务器”(如果有)持久性等的连接 – 或者这应该由框架透明地完成.

解决方法 通常这样的模式需要发布者的代理,即您发送到立即接受传递的代理,然后可靠地转发给最终订阅者工作者. ZeroMQ指南涵盖了实现此目的的几种不同方法.

http://zguide.zeromq.org/page:all

总结

以上是内存溢出为你收集整理的linux – PUB / SUB,短期发布者和长期订阅者全部内容,希望文章能够帮你解决linux – PUB / SUB,短期发布者和长期订阅者所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1047724.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存