我有一个管理工人的经理。以及执行许多工作请求的工人。
管理器是一个监视所有工作进程的程序,并通过TCP端口与工作进程通信。我为不同的工作者创建了许多线程,例如,一个数据收集工作者,一个单独的线程来执行,负责数据收集。只有经理才能与员工进行通信,经理可以查看员工的状态。所有的工作请求必须通过经理将工作请求分配给工人。
Worker是一个运行while true循环的实例,它打开一个TCP端口,允许管理器将工作请求分配给它们。并且每个工作请求被分配,一个新的线程将被分配来处理工作任务。当工作请求完成时,结果将发送回经理。
所有数据都通过TCP套接字在管理器和工作器内进行通信。所有这些都是用java来实现的。数据将是二进制数据。
但我的问题是,在这个架构中,它是太多线程还是太复杂?例如:
User -> assign a work tasks -> Manager (持有多个线程,与worker关联)->assign a work tasks to the worker->(每个工作任务可能涉及多个worker,也可能比较复杂,可以是同步或异步工作任务)-->如果这是一个涉及两个worker的同步工作任务,则会打开两个新的线程并执行。
如您所见,只有一个用户请求可能涉及3+线程。如果用户很多,线程数量会增加很多。或者有什么建议可以让它变得更简单?谢谢。
发布于 2012-03-12 17:31:10
我建议您考虑thread pool pattern或通知线程管理器模式,因为您描述的问题可以通过对恒定大小的线程池的智能管理来解决。但是,您将需要应用少量定制来使其最适合您的特定问题。
https://stackoverflow.com/questions/9664317
复制相似问题