我必须构建一种内存数据库,我知道我可以使用内存数据管理解决方案,如EhCache和HazelCast,但我倾向于不将它们插入我的系统并实现使用Weblogic会话复制。
以下是我的问题:
答案 0 :(得分:3)
您应不将Web会话用作内存数据库。大多数内存数据库允许微调数据在节点之间的分布方式。他们还拥有交易和恢复支持。 Web会话是节点之间非常简单的Java对象复制,您甚至不应该在那里保存关键数据。如果服务器出现故障,在Web会话对象中复制数据的主要目的是让用户登录到另一台服务器,并继续工作,即一些有状态的Web UI。
根据您使用的WebLogic版本(基于获取的许可证),您可能已经可以访问Coherence,即Oracle内存数据网格解决方案。
更新 OP的问题已在下面正确回答。
由于这实际上不是用户会话,我可以创建会话 应用程序启动然后使用Weblogic会话复制功能 实现会话复制?
- 或者我应该考虑Weblogic应用程序上下文复制,是否可能?
应用程序范围(Web应用程序)中的对象不会被复制。您可能可以使用JNDI来做到这一点,但我再次不建议使用这些方法(包括启动监听器以某种方式将事情推送到会话中)。
我是否强制要求使用Weblogic集群来使用WL 会话复制还是可以在没有它的情况下完成?
是的,如果您想要会话复制,则需要WebLogic群集。除了使用群集之外,还有一些要求。请参阅文档章节6 Failover and Replication in a Cluster, in WLS 12.2.1 Docs。
假设我有4个WL服务器(在不同的盒子上运行)并且全部在 相同的集群,如果任何节点/服务器已获取数据并将其放入 会话然后它将自动复制到所有其他 节点/服务器?
不是所有服务器,只有少数。有关使用Replication Groups和其他选项的详细信息,请参阅文档。
假设在重新启动这些节点后,我将关闭3个节点/服务器 我的活动节点会自动将数据推送到起始节点吗?
这不是那么简单,但总之,它并不像你希望的那样有效。会话不会复制到WebLogic群集中的所有节点。复制发生在足够的节点(主节点和辅助节点)上。有关WLS Docs for 12.2.1的更多信息。
同样,您不应将HTTP会话复制功能用作内存数据库。它根本不是为此而设计的。而不是"构建一种内存数据库"而是使用一个。
但是,如果你真的想要将HTTP Session用作内存数据库",至少要确保使用Coherence * Web作为WebLogic中的复制机制。