鉴于JavaServer Faces在服务器端本质上是有状态的,建议使用哪些方法来横向扩展JSF 2.0应用程序?
如果应用程序运行多个JSF服务器,我可以想象以下场景:
[编辑]
根据Ravi对Sticky Sessions的建议进行了更新
答案 0 :(得分:3)
答案 1 :(得分:3)
这是Jelastic PaaS的一个想法:
在双服务器群集中配对应用程序实例,并在一个群集中的这两个实例之间应用会话复制。然后,您可以根据需要添加任意数量的2实例群集,并在群集之间加载平衡请求,每个会话都依赖于它所源自的群集。在集群内,可以在实例之间对请求进行负载平衡。
这种方式存在一定程度的失败安全性,因为如果群集中的一个实例失败,则另一个实例接管,具有相同的会话状态。另一方面,内存影响不像完全复制那样严重。
简而言之,它是你问题中的1.和2.的组合。当然,如果可用性更受关注,每个群集中可以有两个以上的实例。
链接到Jelastic docs我提出了这个想法:http://jelastic.com/docs/session-replication。
免责声明:我实际上并不知道如何使用JSF2配置它,并且与Jelastic没有任何关系。只是喜欢这个想法并认为它可能有所帮助。
答案 2 :(得分:1)
使用“伙伴”语义进行会话复制怎么样?
一个伙伴总内存减半(每个服务器需要保存两个服务器的会话数据),这比必须保存每个服务器的数据要好得多。
好友复制还可以减少带宽开销。