当前位置: 首页 > 面试题库 >

集群环境中的单例

吴宏扬
2023-03-14
问题内容

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

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

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

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

谢谢。

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


问题答案:

最简单的方法是:

  1. 在您的单例缓存中添加一个到期计时器,以便每隔一段时间就会清除一次缓存,随后的调用会从源(例如数据库)中获取更新的数据

  2. 使用类似JMS topic / tibRV的东西为缓存实现一个通知机制。获取每个缓存实例以订阅并对该主题上广播的任何更改消息作出反应。



 类似资料:
  • 一、单机环境搭建 1.1 下载 下载对应版本 Zookeeper,这里我下载的版本 3.4.14。官方下载地址:https://archive.apache.org/dist/zookeeper/ # wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz 1.2 解压 # t

  • 我使用Spring调度程序,使用@调度注释来调度运行文件生成服务的作业。应用程序部署在集群环境中Tomcat的5个单独节点上,用于负载平衡和故障转移。正因为如此,服务被调度了5次,这是不可能的。有没有办法将调度程序配置为仅在当前节点上运行? 有一种方法使用数据库找出当前活动节点,并在这里调用该特定实例的调度器 另一种方法是使用石英调度器 由于我无法对部署的应用程序进行重大更改,是否有简单的解决方案

  • 目前Cloud-ML生态云只有武清集群。这个集群的基本配置如下: 武清集群 集群目前包括若干台CPU和GPU节点。 集群的Endpoint为:https://cnbj2.cloudml.api.xiaomi.com

  • 问题内容: 我需要为集群环境中的所有用户和所有节点维护一个在应用程序内唯一的简单计数器。我考虑过像这样使用单例会话bean注释javax.ejb.Singleton: 这看起来很简单,但是如果它在集群环境中可以正常工作,我将找不到答案。集群的每个节点是否都具有自己的实例? 当然,我可以将bean保留在数据库中,但实际上这只是一个计数器,这样做会过分杀伤力。另外,我希望计数器在应用程序崩溃或重新启动

  • 一、前置条件 Hadoop 的运行依赖 JDK,需要预先安装,安装步骤见: Linux 下 JDK 的安装 二、配置免密登录 Hadoop 组件之间需要基于 SSH 进行通讯。 2.1 配置映射 配置 ip 地址和主机名映射: vim /etc/hosts # 文件末尾增加 192.168.43.202 hadoop001 2.2 生成公私钥 执行下面命令行生成公匙和私匙: ssh-keyge

  • 我们的(Spring)应用程序包含几个,这些调度器在夜间活动,以更改/更新中的一些数据(来自 )。 这一切都运行良好,问题是我们的应用程序很快就会在运行。 防止< code >实例A和< code >实例B的< code >调度程序同时执行相同工作的最佳选项是什么? **UPDATE** 群集环境设置为。 每个节点都与自己的数据库实例通信。每个数据库实例将数据复制到其他实例。 DB-实例不是设置为