2012-03-12 31 views
0

我有一位管理人员来管理员工。和工作人员做很多工作要求。如何简化这个软件架构?

管理器是一个程序,监控所有的工人,并通过TCP端口与工人沟通。我为不同的工作人员创建了许多线程,例如,数据收集工作人员,为执行该工作的单独线程负责数据收集。只有管​​理者可以和工人沟通,管理者可以检查工人的状态。所有的工作要求都必须由经理向工人分配工作要求。

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

所有数据通过TCP套接字在管理器和工作人员内通信。所有这些都使用java来实现。数据将是一个二进制数据。

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

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

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

+0

这些系统/线程 - 它们是否分布在许多联网的盒子上? – 2012-03-12 09:27:07

+0

它可能也可能不会。当工作人员的工作量非常大时,可能会使用单独的服务器来运行它。 – DNB5brims 2012-03-12 09:29:58

+1

你有没有看过像Akka(http://akka.io/)的东西? – nwinkler 2012-03-12 09:36:58

回答

0

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