首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在应用服务器中还是在数据库中维护状态?

在应用服务器中还是在数据库中维护状态?
EN

Stack Overflow用户
提问于 2010-01-27 05:41:01
回答 4查看 2.9K关注 0票数 5

REST提倡服务器上没有客户端状态的web应用程序。著名的购物车示例被转换为通常驻留在数据库中的资源。

我想知道使用数据库存储此类数据是否是一种好的做法,因为数据库已经成为许多应用程序的瓶颈。使用有状态的企业java bean不是更好吗?应用程序服务器在设计时考虑到了clustring。

这两种方法的优缺点是什么?

EN

回答 4

Stack Overflow用户

发布于 2010-01-27 05:47:17

只有在以下情况下,才能在应用程序服务器上存储会话:

会话和您的客户端总是连接到同一个应用服务器(也称为“

  • 应用集群节点都使用一个公共的挂载点(nfs等)”)。假脱机会话

如果不能保证客户端始终连接到集群中的同一应用程序节点,则在中央数据库和/或EJB中存储会话将会起作用。

另一种需要考虑的方法是使用诸如memcached之类的服务。这在任何一种情况下都可以工作。

票数 3
EN

Stack Overflow用户

发布于 2010-01-27 05:47:17

一般而言:

数据库

  • 更加可靠,在应用程序/服务器重启后仍能存活
  • 可在负载平衡的服务器之间共享,而无需处理访问

的“粘性”sessions

  • slower

内存中(非分布式有状态bean)

如果应用程序/服务器重新启动retrieval

  • Less

  • ,快速存储和retrieval
  • Less code
  • 将丢失

您的选择将完全取决于您的应用程序要求和环境。在所有条件相同的情况下,我更喜欢数据库解决方案,因为它具有负载平衡和可靠性方面的好处,但在许多情况下,这很容易被夸大。

票数 2
EN

Stack Overflow用户

发布于 2010-01-27 05:47:58

当你的应用服务器死掉时会发生什么。会话状态是否仍然重要?去找一个数据库。

你有更多的会话状态,那么你的服务器可以处理所有并发用户吗?将数据移动到数据库中,只提取当前真正需要的数据,这可能是一种解决方案。

你的应用是集群的吗?如果是这样,中央数据库将确保sessiondata始终可用。

否则:只需将其存储在会话中。

您是否有极端的伸缩要求(例如堆栈溢出或流量更大的站点)?找到一个不使用数据库的方法。

确实,数据库常常是瓶颈。但是,一个正确设置的数据库应该可以很好地处理几个字节的会话数据。更复杂的数据和查询是以性能为代价的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2142856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档