如何简化这个软件架构?

时间:2012-03-12 09:16:09

标签: java multithreading networking architecture

我有一位管理工人的经理。和工人做很多工作要求。

Manager是一个监控所有工作人员的程序,并通过TCP端口与工作人员进行通信。我为不同的工作者创建了许多线程,例如,数据收集工作者,一个用于执行该工作的单独线程,负责数据收集。只有经理才能与工人沟通,经理可以检查工人的状态。所有工作请求都必须通过经理将工作请求分配给工人。

Worker是一个运行while true循环的实例,它打开一个TCP端口,允许管理员将工作请求分配给它们。并且分配了每个工作请求,将分配新线程来处理工作任务。完成工作请求后,结果将发送回经理。

所有数据都通过TCP套接字在管理器和工作人员之间进行通信。所有这些都是使用java来实现的。并且数据将是二进制数据。

但我的问题是,这个架构中的线程太多还是太复杂?例如:

用户 - >分配工作任务 - >经理(持有许多线程,与工人相关)--->为工人分配工作任务---> (每个工作任务可能涉及多个工作人员,而且更复杂,可能是同步或异步工作任务) - >如果这是一个涉及两个工作人员的同步工作任务,则会打开两个新线程并执行。

如您所见,只有一个用户请求可能涉及3个以上的线程。如果有很多用户,则线程数会增加很多。或者任何使其更简单的建议?谢谢。

1 个答案:

答案 0 :(得分:0)

我建议您考虑thread pool pattern或通知线程管理器模式,因为您描述的问题可以通过智能管理常量大小的线程池来解决。但是,您需要应用一些自定义项,以使其最适合您的特定问题。

相关问题