关闭。这个问题是opinion-based .它目前不接受答案。
想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.
4年前关闭。
Improve this question
运行(计划的)后台任务和处理 Web 请求有哪些不同的优缺点 同上 (Java)服务器?
我想到的一些需要考虑的点:
最佳答案
tl;博士
优点
缺点
细节
在线、短期请求-响应操作(例如 API)和计划的后台任务(例如维护作业或数据管理操作)之间的资源使用模式非常不同。
出于这个原因,在不同的虚拟机甚至物理机上运行这些任务的最低级别通常是一个好主意。
垃圾收集器视角
如果正在使用相同的 JVM 实例,那么消耗大量内存然后释放的批处理作业将导致垃圾收集暂停在线请求的执行,从而降低响应时间。
这可以通过在其自己的 JVM 上运行每种类型的操作来最小化停止世界效应的影响来缓解。
数据隔离
如果后台任务对与在线请求相同的数据进行操作,那么您可能至少可以重用一些数据访问和映射层代码,这可能会以在数据层引入耦合为代价来节省一些工作。
CPU/内存使用
如果批处理作业受 CPU 或内存限制,那么它将影响在线请求的性能,除非您对每个进程可以使用的 CPU/内存份额设置了一些限制。这可以在 VM、容器或进程级别完成。
流量激增
如果批处理作业使用大量带宽,则会影响在线请求向客户端发送内容的能力。与 CPU 和内存一样,每个应用程序也可以限制带宽以减轻这种影响。
安全
传统上,面向客户端的应用程序(例如 API)应该经过适当的审核和加固,以避免出现漏洞。预定的后台批处理过程通常具有较小的攻击面,因为它们不需要暴露给客户端,因此更难以妥协。
当然,根据部署的性质,为两个应用程序共享相同的基础架构会增加批处理作业的风险。
关于web-services - 优点和缺点 - 在同一台服务器上运行(预定)后台任务和 Web 请求处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41220476/