1

这是一个设计(架构)问题。假设有一个 Java 服务器,它处理客户端请求。该处理包括由外部 Java 进程工作人员而不是服务器本身执行的步骤。

也就是说,我们有一个服务器和一些工作进程:一些执行步骤 A的工作人员,一些执行步骤 B步骤 C的工作人员,等等。

还假设服务器和所有工作人员使用 HTTP 进行通信。现在我想知道如何为服务器和工作人员之间的通信设计一个协议。

目前我正在考虑以下几点:

  • 工作人员准备好工作时,它会向服务器发送一个 HTTP GET 请求。该请求包含工作人员 ID(他的主机 + PID)、状态和步骤:例如worker_status=READY, host=localhost, pid=1234, steps=A

  • 当有一个步骤要执行时,服务器会发送一个带有步骤名称、输入数据和截止日期的响应:step=A, deadline=..., data=...

  • 工作人员完成处理时,它会向服务器发送一个 HTTP GET 请求。该请求包含步骤名称、处理状态和输出数据finished_step=A, status=SUCCESS, output=...以及第一条消息中的信息(见上文):worker_status=READY, host=localhost, pid=1234, steps=A

是否有意义?服务器和工作进程之间的这种通信是否有任何现有的众所周知的协议?

4

1 回答 1

1

如果您的协议涉及非常(非常)简单的“命令”,那么我认为您的协议草案是有意义的。

事实是没有“正确”的回应。我的经验告诉我,最好使用已经存在的东西(如 JMS,正如我在对您的问题的评论中提到的那样)而不是试图创建一个更简单的解决方案,有时它会欺骗认为现有的解决方案太复杂和我们可以做得更简单。相信我,您会遇到在设计之初没有看到的问题,并且会使用最初估计的更多时间。

但是,也许你有一个很好的主意,所以,跟随你的程序员的直觉,有你自己的经验;-)

于 2013-06-29T13:10:46.540 回答