2

我在这里尝试了一些问题,试图找到使用会话变量的替代方法。我有几点要说,所以我将我的作为一个新问题发布。

我的 Web 应用程序是使用 springs 在 Java 上构建的。我使用普通的 SQL 和休眠来执行一堆数据库读/写操作。它在两个 Tomcat 容器上运行。我的要求是找到使用会话变量的合适且可扩展的替代方案。目前,我正在使用 session 来存储大量事务。有两种类型的事务,完成的和排队的,我有两个会话对象来存储它们。有数千笔交易,每笔交易都有大约 10 个与之相关的变量。

  1. 首先,我想将所有事务存储在会话中。原因是我想避免数据库查询,直到某些事情发生变化,即任何事务都已更新。我有适当的逻辑来在发生任何更新时重新加载会话对象。
  2. Web 应用程序的用户还不是很多,所以我不需要优化内存大小来存储所有会话对象,但是有一个可以容纳数十万个事务的设计肯定会很好。
  3. 我有一个负载均衡器,我的 Web 应用程序在两个 Tomcat 应用程序上运行,我遇到了不同服务器上加载的事务不匹配的问题。例如,我根据日期对交易进行排序 - 当我浏览不同的交易时,它们不会按日期排序。我假设其中一台服务器有一个排序列表,而另一台服务器有一个未排序列表。我还没有探索会话复制的选项,我真的不想使用粘性会话。
  4. 使用 cookie 太麻烦了,因为每个事务的数量和细节都很大。
  5. 使用隐藏变量或作为请求属性 - 不好,因为我必须将每个链接转换为表单提交。
  6. 自定义缓存——目前还没有探索过,也没有大型基础设施来实现它。

还有其他我没有想到的选择吗?

4

0 回答 0