将 Singleton 对象重构为集群环境的最佳策略是什么?
我们使用 Singleton 来缓存数据库中的一些自定义信息。它大部分是只读的,但在某些特定事件发生时会刷新。
现在我们的应用程序需要部署在集群环境中。根据定义,每个 JVM 都会有自己的 Singleton 实例。因此,当单个节点上发生刷新事件并刷新其缓存时,JVM 之间的缓存可能会不同步。
保持缓存同步的最佳方法是什么?
谢谢。
编辑:缓存主要用于向 UI 提供自动完成列表(性能原因),我们使用 Websphere。因此,欢迎任何与 Websphere 相关的提示。
最佳答案
用分布式缓存替换你的单例缓存。
一个这样的缓存可以是 JBoss Infinispan但我确信存在其他分布式缓存和网格技术,包括目前可能更成熟的商业技术。
对于一般的单例对象,我不确定。我想我会尽量不要有单例。
关于java - 集群环境中的单例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1194129/