【问题标题】:Stateless load balanced application leads Database bottlenecks无状态负载均衡应用导致数据库瓶颈
【发布时间】:2013-08-11 11:25:19
【问题描述】:

我正在阅读有关scalabilityperformance 的应用程序,并遇到了一行说明

"从应用程序中移除状态有显着增加 结果导致数据库负载"

我无法理解这一行,原因如下:

  1. 假设我正在使用 www [或 rest ] 并向网络服务器发送请求 stateless
  2. 如果我的请求需要 DB 操作,它不等同于任何 stateful 请求吗?

增加数据库负载的无状态请求有什么问题?

【问题讨论】:

    标签: database rest load-balancing stateless


    【解决方案1】:

    嗯,我不知道引用内容的上下文。您可以删除(或最小化)应用程序的状态,但并非在所有情况下都如此。首先,在这些情况下,您可以做的是将状态移动到数据库(或像 redis 这样的企业缓存)——只是以某种方式持久化状态对象。因此,与节点包含数据的情况相比,每个请求从数据库中获取的数据更多。

    我们尝试在我当前的项目中设置以毫秒为单位的响应时间。删除状态意味着加载大型 DDD 聚合,这会使每个请求的一个请求减慢几秒钟并带来额外的数据库负载 - 这是引用语句的结果。

    【讨论】:

    • 当我遇到这条线时,我正在阅读有关 oracle coherence 的信息。你的观点很有道理。
    【解决方案2】:

    我不认为你引用的陈述是真的。

    此约束引入可见性、可靠性和 可扩展性。可见性得到改善,因为监控系统确实 无需查看单个请求数据即可确定 请求的全部性质。可靠性得到提高,因为它 简化了从部分故障中恢复的任务[133]。可扩展性 得到改进,因为不必在请求之间存储状态允许 服务器组件快速释放资源,进一步简化 实现,因为服务器不必管理资源 跨请求使用。

    根据Fielding dissertation,从通信中移除状态可以提高可扩展性,因此有必要定义 REST 的分层系统约束,从而进一步提高可扩展性。明确一点:您可以在系统的任何位置添加缓存,因此相反的数据库负载会减少。

    【讨论】:

      猜你喜欢
      • 2012-11-10
      • 2013-08-20
      • 2012-11-19
      • 2019-08-07
      • 1970-01-01
      • 2010-11-12
      • 2021-12-07
      • 2019-01-10
      • 1970-01-01
      相关资源
      最近更新 更多