了解整个集群环境中的静态变量

时间:2019-06-05 10:32:29

标签: java

我们一直在尝试实现某种缓存机制,其中我们试图通过插件呈现对象列表。然后,将这些值列表保存在类中的并发哈希图中。当需要通过UI时,我们将创建该类的实例,并引用此缓存以显示值列表。可以通过联机按钮或隔夜作业来刷新缓存(如果为空/空,程序也会加载缓存)。

在我们处于单个群集中之前,这一切正常。当我们移至群集环境时,并且在其他系统上添加新的/修改的对象(通过插件进行交互)时,该列表仅在批处理兼在线服务器上刷新,而另一个群集不同步。这个问题间歇地发生,现在对静态变量有疑问。是否为单独的jvm创建了一个静态变量?如果是这样,它是否以某种方式同步。还有关于为什么这是间歇性的任何提示(我们怀疑批处理运行期间是否存在集群外的问题-但不确定)。

私有静态地图_cache =新的ConcurrentHashMap(16,0.75,1)

java 1.6版

使用IBM WAS服务器

1 个答案:

答案 0 :(得分:1)

当然,您的静态变量仅在创建的JVM中有效且有意义。

要解决此问题,您可以通过在批处理同步完成后向所有其他服务器发送更新请求来达到目的。

但是,正式的方法是将缓存存储分为独立服务器(例如redis)而不是静态变量