Axon:使用 Quartz Deadline Manager 锁定争用

问题描述

在使用 Quartz 和 Oracle 来持久化最后期限时,我们发现与使用内存实现相比,性能显着下降,其中 JVM 处于空闲状态并且无法处理来自我们的 Kafka 主题的事件。在这些空闲期间,我们的数据库分析表明会话之间存在严重的锁争用(每个 JVM 有 8 - 1 个)。我们推测 Quartz 中的这种死锁行为在某种程度上影响了 Axon 的事件处理。

注意事项:

  • Quartz 被配置为使用带有分布式锁定的集群。我们不能容忍 JVM 中相同期限的重复触发器,因为期限处理程序逻辑是重放事件。所以不能使用信号量。

问题:

  • 有没有人观察到这种行为或对配置调整有任何建议?
  • Quartz 以异步方式工作,那么为什么这会影响 Axon Kafka 线程?
  • Axon 或 Quartz 是否提供批处理或自定义调度间隔的方法,以便 尝试阻止争用?
  • 我们会在收到事件后立即安排截止日期(作为一种重播机制,尤其是在 JVM 崩溃的情况下),但如果短期进程成功,我们会立即取消它们。也许这个双数据库事务导致了这个问题。有没有更好的方法解决这个问题?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)