CloudBees上的应用程序会话存储

时间:2013-05-14 14:55:53

标签: java load-balancing session-state cloudbees paas

我正在努力完全理解何时/如何使用CloudBees的application session stores概念。

阅读完那篇文章之后,我对它们的理解就是它们提供了一种让appserver的多个实例共享持久会话变量的方法。这样,您可以在每个服务器之间进行负载平衡,并且用户重定向到哪个实例并不重要;每个服务器实例具有相同的共享会话状态(适用于所有用户)。

首先,如果我的理解不正确或有点误导,请先纠正我!

假设我或多或少是正确的,那么我有以下问题:

  1. 这对性能或内存利用率有何影响?我想如果每个服务器必须为所有用户共享相同的缓存会话数据,它会变得有点笨重甚至可能很昂贵......
  2. 有没有办法以编程方式CRUD会话状态(即刷新缓存,用JMX检查等)?
  3. 有人可以为这个功能提供一个具体的用例,所以我很肯定我“得到它”吗?
  4. 提前致谢!

1 个答案:

答案 0 :(得分:1)

会话存储允许您在群集周围复制HttpSession,以便您可以在多个实例上扩展应用程序负载,而无需将用户粘贴到特定服务器(这是您可以使用的另一个选项:configure {{ 3}})

本质上,序列化HttpSession数据会对性能产生一些影响,但是因为它使用了一个memcache后端,所以这是最小的。这主要取决于您在用户会话中存储的对象的数量和大小。另外,请注意这需要您在任何属性更改后明确地将对象放入HttpSession中,甚至从会话中检索对象 - 这是JavaEE群集的一般API问题。

您无法以编程方式查询会话存储(可以使用足够的内存缓存客户端代码,但这没有多大意义)

两个具体用例

  • 应用程序分布在多个节点上,会话分布在群集周围,没有粘性会话,因此实际为所有用户分配负载
  • 重新部署的应用程序不会遭受用户会话丢失,确保连续0停机服务。然后,版本N + 1应用程序将从版本N检索httpsession数据,需要从序列化角度兼容,但连接用户将不会注意到重新部署和版本升级
相关问题