1

我花了几个星期寻找能够执行以下操作的守护进程:

  • 处理来自其他网络主机的任意数量的客户端。
  • 允许客户端以一个身份注册服务。
  • 允许其他客户端通过可靠的错误处理对这些注册的服务进行 RPC 调用(如果为该服务注册的客户端分离,则守护程序应向调用者报告错误,而不是让它挂起)。
  • 允许客户端注册以接收其他客户端可以广播的事件。
  • 越简单越好。

我在 F/LOSS 世界中发现的最接近的东西是 D-Bus,它满足所有这些标准,除了第一个标准:它不能可靠地与远程连接一起工作。我已经花时间研究其他选项(ESB 和 MQ 守护程序——花费最多时间在 0MQ 和 RabbitMQ 上),它们都以某种方式不足:ESB 往往非常复杂,学习曲线高,而 MQ 守护程序倾向于提供一半的解决方案(路由),而让另一半(错误恢复)极其复杂,如果不是不可能的话。

除了一个客户说“我提供服务'foo'”和另一个客户说“我想在服务'foo'上调用方法'bar'”之外,我并没有寻找任何出色的路由功能。

似乎这样的东西已经存在了,我犹豫要不要自己动手。

用例是我将在许多主机上拥有许多进程。每个主机都有一个调控器进程/服务,它将通过控制面板控制这些进程的生命周期。流程本身也将是服务,允许直接查询状态以及来自此面板的重新配置请求。诀窍是进程会来来去去,所以端点的静态配置不是我真正想要打扰的事情。我宁愿让每个进程负责告诉守护进程“我正在为某某服务”,然后让守护进程执行客户端间路由。

开发这个系统我真正缺少的唯一部分是可以在所有这些进程之间路由 RPC 请求的东西。那里有这样的守护进程,还是有其他模型更适合我的需求?

4

0 回答 0