JSF 2.0应用程序的水平扩展

Ale*_*uch 6 stateful cluster-computing web-architecture horizontal-scaling jsf-2

鉴于JavaServer Faces在服务器端本质上是有状态的,建议使用哪些方法来横向扩展JSF 2.0应用程序?

如果应用程序运行多个JSF服务器,我可以想象以下场景:

  1. 粘滞会话:将与给定会话匹配的所有请求发送到同一服务器.
    • 问题:通常使用什么技术来实现这一目标?
    • 问题:服务器故障导致会话丢失......并且通常看起来像脆弱的架构,尤其是在重新开始时(不尝试扩展现有应用程序)
  2. 状态(会话)复制:在群集中的所有JSF服务器上复制JSF状态
    • 问题:通常使用什么技术来实现这一目标?
    • 问题:没有扩展.cluster的总内存=最小服务器上的总内存
  3. 指示JSF(通过配置)将其状态存储在外部资源(例如运行内存非常快的数据库的另一台服务器)上,然后在需要应用程序状态时从JSF服务器访问该资源?
    • 问题:这可能吗?
  4. 指示JSF(通过配置)是无状态的?
    • 问题:这可能吗?

[编辑]

更新以回应Ravi对Sticky Sessions的建议

Rav*_*avi 4

这可以通过在粘性会话模式下配置负载均衡器来实现。

更多信息

这样您的所有后续请求都会发送到同一应用程序服务器。