我们已经建立了基础架构,其中Web服务器是集群的,而应用程序服务器则不是。 Web服务器根据循环策略将请求路由到应用程序服务器。
在此方案中,一个应用程序服务器中可用的会话数据在另一个应用程序服务器中不可用。无论如何,第一个应用程序服务器的会话数据是否可以在第二个应用程序中使用?这两个应用程序服务器在不同的单元格中是物理上分开的框。
一种方法可能是使用数据库 - 是否还有其他方法来完成此会话复制?
答案 0 :(得分:4)
在WebSphere中,基本上有两种方法来复制会话数据:
哪一个适合您的需求高度依赖于您的应用场景:
当所有应用程序服务器出现故障时,会话数据的持久性有多重要? 您同时拥有多少个会话对象?
在数据库中,您可以存储多个会话而没有太多问题,另一个选项始终是可用内存量的问题。
如果您已经有一个设置,我会使用数据库,所有应用程序服务器都会使用它。
以下是WebSphere Information Center的链接以及必要的详细信息。
答案 1 :(得分:2)
一个明显的解决方案是启用应用程序服务器的群集。我假设你说出你的问题的方式,你拒绝了这个选项。另一种选择是更改Web服务器使用的路由以使用会话关联(对同一会话的请求转到同一个应用服务器)。
除此之外,我还得到了dertoni的回答。
答案 2 :(得分:1)
也许你可以看看'terracota'。它是一个缓存框架,可以缓存会话并在单独的服务器上运行
答案 3 :(得分:1)
WebSphere,会话复制或数据库中有两种集群选项。如果您有大型会话对象,最好使用数据库,因为它允许您将陈旧的会话卸载到磁盘。如果它们随后被表示,那么它们可以从数据库中提取,如果您使用会话复制,那么这些会话不仅需要保留在内存中,而且还要保留在目标服务器以及复制组中的其他服务器上。对于大型会话,这可能会导致内存不足。
使用数据库会话处理时,它也是非常可定制的,并且在我使用它的环境中表现不明显。
答案 4 :(得分:0)
不要忘记oracle的连贯性。