群集环境中的单例

lud*_*d0h 43 java websphere singleton cluster-computing

将Singleton对象重构为集群环境的最佳策略是什么?

我们使用Singleton从Database中缓存一些自定义信息.它主要是只读的,但在某些特定事件发生时会刷新.

现在我们的应用程序需要部署在集群环境中.根据定义,每个JVM都有自己的Singleton实例.因此,当在单个节点上发生刷新事件并刷新其缓存时,缓存可能在JVM之间不同步.

保持缓存同步的最佳方法是什么?

谢谢.

编辑:缓存主要用于向UI提供自动完成列表(性能原因),我们使用Websphere.所以任何与Websphere相关的技巧都欢迎.

Chr*_*est 16

用分布式缓存替换单例缓存.

一个这样的缓存可能是JBoss Infinispan,但我确信存在其他分布式缓存和网格技术,包括此时可能更成熟的商业技术.

对于一般的单身对象,我不确定.我想我一开始就试着没有单身人士.


pjp*_*pjp 9

最简单的方法是:

  1. 在您的单例缓存中添加一个到期计时器,以便每隔一段时间缓存一次,并且子顺序调用从源(例如数据库)获取更新的数据

  2. 使用类似JMS主题/ tibRV的东西实现缓存的通知机制.获取每个缓存实例以订阅并响应在此主题上广播的任何更改消息.


Ric*_*ick 8

您可以使用WAS中内置的DistributedMap.

-Rick