web-services - 优点和缺点 - 在同一台服务器上运行(预定)后台任务和 Web 请求处理

标签 web-services architecture server scheduled-tasks

关闭。这个问题是opinion-based .它目前不接受答案。












想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.

4年前关闭。




Improve this question




运行(计划的)后台任务和处理 Web 请求有哪些不同的优缺点 同上 (Java)服务器?

我想到的一些需要考虑的点:

  • 垃圾收集器如何运作
  • 数据隔离
  • CPU/内存使用率
  • 流量激增
  • 安全
  • 最佳答案

    tl;博士

    优点

  • 方便 : 少机器操作
  • 费用 :共享基础设施将控制成本

  • 缺点
  • 复杂性 : 在同一台服务器上管理不同的应用程序可能不明显或不简单
  • 可扩展性 :扩展 API 比扩展批处理作业更简单
  • 可用性 :如果您引入 HA,那么您将不得不实现某种锁定机制来避免批处理作业并发问题
  • 安全 : 会增加攻击面

  • 细节

    在线、短期请求-响应操作(例如 API)和计划的后台任务(例如维护作业或数据管理操作)之间的资源使用模式非常不同。

    出于这个原因,在不同的虚拟机甚至物理机上运行这些任务的最低级别通常是一个好主意。

    垃圾收集器视角

    如果正在使用相同的 JVM 实例,那么消耗大量内存然后释放的批处理作业将导致垃圾收集暂停在线请求的执行,从而降低响应时间。

    这可以通过在其自己的 JVM 上运行每种类型的操作来最小化停止世界效应的影响来缓解。

    数据隔离

    如果后台任务对与在线请求相同的数据进行操作,那么您可能至少可以重用一些数据访问和映射层代码,这可能会以在数据层引入耦合为代价来节省一些工作。

    CPU/内存使用

    如果批处理作业受 CPU 或内存限制,那么它将影响在线请求的性能,除非您对每个进程可以使用的 CPU/内存份额设置了一些限制。这可以在 VM、容器或进程级别完成。

    流量激增

    如果批处理作业使用大量带宽,则会影响在线请求向客户端发送内容的能力。与 CPU 和内存一样,每个应用程序也可以限制带宽以减轻这种影响。

    安全

    传统上,面向客户端的应用程序(例如 API)应该经过适当的审核和加固,以避免出现漏洞。预定的后台批处理过程通常具有较小的攻击面,因为它们不需要暴露给客户端,因此更难以妥协。

    当然,根据部署的性质,为两个应用程序共享相同的基础架构会增加批处理作业的风险。

    关于web-services - 优点和缺点 - 在同一台服务器上运行(预定)后台任务和 Web 请求处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41220476/

    相关文章:

    linux - 如何连接服务器电脑和客户端电脑

    linux - 服务器端node.js请求无法连接到主机

    c# - 更改 WCF 引用 URL .Net Core

    java - sun.reflect.annotation.TypeNotPresentExceptionProxy - 在 weblogic 上部署 SOAP web 服务

    java - 如何在 Gsoap 客户端中使用带有对称 key 的用户名身份验证来使用 Java Metro Web 服务?

    php - 如何在 Yii 中制作 Web 服务 SOAP 1.2

    java - Spring Aop的一些维护

    c - 机器的频率会影响我的代码的执行时间吗?

    java - 层和组件有什么区别?

    ssl - 应该为www.domain.com 还是domain.com 制作SSL 证书,应该如何配置?