1

我正在阅读关于scalabilityperformance应用程序的内容,并遇到了一条说明

“从应用程序中删除状态会显着增加数据库负载”

我无法理解这条线,原因如下:

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

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

4

2 回答 2

1

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

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

于 2013-08-11T14:27:29.733 回答
0

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

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

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

于 2014-09-07T12:13:56.370 回答