Joh*_*nny 4 architecture web-services scheduled-tasks server
在同一台(Java)服务器上运行(预定的)后台任务和处理Web请求的优缺点有哪些不同?
我考虑过的几点要点:
在线,短暂的请求-响应操作(例如API)和计划的后台任务(例如维护作业或数据管理操作)之间的资源使用模式有很大不同。
因此,通常最好以尽可能低的级别隔离此类任务,以在不同的VM甚至物理机上运行它们。
如果使用相同的JVM实例,则批处理作业将占用大量内存,然后释放该内存,这将导致垃圾回收暂停联机请求的执行,从而降低响应时间。
可以通过在自己的JVM上运行每种类型的操作来最大程度地减少Stop the world效应的影响,从而减轻这种情况。
如果后台任务使用与在线请求相同的数据进行操作,则您可能可以重用至少某些数据访问和映射层代码,从而以在数据层引入耦合为代价来节省一些工作。
如果批处理作业是受CPU或内存限制的,那么它将影响联机请求的性能,除非您对每个进程可以使用的CPU /内存份额设置一些限制。可以在VM,容器或进程级别完成此操作。
如果批处理作业使用大量带宽,则将影响在线请求向客户端发送内容的能力。与CPU和内存一样,每个应用程序也可以限制带宽以减轻这种影响。
传统上,应对面向客户端的应用程序(例如API)进行适当的审核和强化,以避免漏洞。计划的后台批处理进程通常具有较小的攻击面,因为它们不需要暴露给客户端,因此更难以妥协。
当然,根据部署的性质,为两个应用程序共享相同的基础结构将增加批处理作业的风险。
| 归档时间: |
|
| 查看次数: |
422 次 |
| 最近记录: |