java - 多个 JVM 的并发 HashMap 可扩展性

标签 java concurrency

当前实现:

有一个队列,消息从该队列被推送到组件,消息从队列被放置在数据库中并被进一步处理。它涉及许多数据库调用并且也需要更多时间。因此需要通过不同的方法来修改它。

其中一个解决方案是:拥有一个并发 Hashmap,其中键作为 header ID,值作为并发链接消息队列。

  1. Dispatcher – 根据消息头 ID 隔离传入消息,并将它们放置在 ConcurrentHashMap 中,其中键作为 ID,值作为 ConcurrentLinkedQueue 中的值。
  2. 工作线程 – 工作线程是一个调度线程,它将以指定的时间延迟重复调用处理器。它将每个 header id 下分组的各个队列通过执行器发送到处理器。一旦 map 中的特定 header ID 为空,就会将其删除。
  3. 处理器 – 从队列(ConcurrentLinkedQueue)中逐条轮询消息并进行处理。

此外,我的一位同事评论道:“该方法应该是可扩展的,因为我们正在考虑从不同主机运行的组件的另一个实例”

请对此进行一些说明。如何做到这一点?非常感谢任何指示或链接或任何帮助。

最佳答案

关于java - 多个 JVM 的并发 HashMap 可扩展性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51701113/

相关文章:

java - 按需初始化 holder 习语的正确实现

java - LockSupport parkUntil 带阻挡器

go - Go 中令人尴尬的并行任务的惯用解决方案是什么?

java - 初学者 Java Netbeans : How do I display for loop in jlabel?

JavaFx:如何在listView中显示和隐藏滚动条?

C++:将值赋给原始数据类型(例如 bool)是原子操作吗?

multithreading - 如何等待执行

java - 插件 maven-antrun-plugin 执行未包含在 m2e 的生命周期配置中

java - 是否可以有非字典顺序

java - 如何在android studio中比较Long类型的数据