创建线程与进程以获得更好的维护 - 设计方法

Posted

技术标签:

【中文标题】创建线程与进程以获得更好的维护 - 设计方法【英文标题】:Creating threads vs process for better maintainence - Design approach 【发布时间】:2015-06-13 17:51:17 【问题描述】:

我有一个场景,我想使用第三方rest api查询组织的员工信息。这将针对不同的组织进行,我们将获得员工列表,我预计每个组织大约有 500 到 50k 用户。

我正处于 poc 阶段,我想确定处理此问题的最佳方法。一种选择是创建一个单一的 java 进程,并为每个用户生成一个线程。另一种方法是为每个用户创建一个进程,我们在其中编写一些 shell 脚本来提供每个员工的详细信息。

我的问题是,从维护的角度来看,哪个是更好的解决方案。由于依赖于 3rd 方 api,某些用户可能会遇到问题。从支持点和调试点来看,这可能是更好的方法。这可能是一个非常开放的问题。我想知道,如果有人以前遇到过任何情况,他们的方法是什么。

【问题讨论】:

您预计有 500-50k 用户,并且您希望每个用户有一个单独的线程或进程?这有什么可能的好处? 【参考方案1】:

如果您有许多任务需要同时运行,您想使用Thread Pools。一个线程池拥有许多线程,并被交给需要完成的工作单元。然后,池将每个工作单元传递给第一个空闲线程,为您管理实际执行。

您的池应包含多少线程取决于您的确切要求,但假设您将频繁轮询这些 API,每个 API 一个线程可能是合理的。

鉴于您所描述的内容,无需单独的流程。

【讨论】:

以上是关于创建线程与进程以获得更好的维护 - 设计方法的主要内容,如果未能解决你的问题,请参考以下文章

转:更好的认识进程与线程

《内核设计与实现》读书笔记- 进程管理

线程与进程

20165223《Java程序设计》第八周Java学习总结

Linux下的进程类别(内核线程轻量级进程和用户进程)以及其创建方式--Linux进程的管理与调度

《Linux内核设计与实现》读书笔记- Linux的进程