首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何简化这个软件架构?

如何简化这个软件架构?
EN

Stack Overflow用户
提问于 2012-03-12 17:16:09
回答 1查看 163关注 0票数 0

我有一个管理工人的经理。以及执行许多工作请求的工人。

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

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

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

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

User -> assign a work tasks -> Manager (持有多个线程,与worker关联)->assign a work tasks to the worker->(每个工作任务可能涉及多个worker,也可能比较复杂,可以是同步或异步工作任务)-->如果这是一个涉及两个worker的同步工作任务,则会打开两个新的线程并执行。

如您所见,只有一个用户请求可能涉及3+线程。如果用户很多,线程数量会增加很多。或者有什么建议可以让它变得更简单?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2012-03-12 17:31:10

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9664317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档