如何解决Axon:使用 Quartz Deadline Manager 锁定争用
在使用 Quartz 和 Oracle 来持久化最后期限时,我们发现与使用内存实现相比,性能显着下降,其中 JVM 处于空闲状态并且无法处理来自我们的 Kafka 主题的事件。在这些空闲期间,我们的数据库分析表明会话之间存在严重的锁争用(每个 JVM 有 8 - 1 个)。我们推测 Quartz 中的这种死锁行为在某种程度上影响了 Axon 的事件处理。
注意事项:
- Quartz 被配置为使用带有分布式锁定的集群。我们不能容忍 JVM 中相同期限的重复触发器,因为期限处理程序逻辑是重放事件。所以不能使用信号量。
问题:
- 有没有人观察到这种行为或对配置调整有任何建议?
- Quartz 以异步方式工作,那么为什么这会影响 Axon Kafka 线程?
- Axon 或 Quartz 是否提供批处理或自定义调度间隔的方法,以便 尝试阻止争用?
- 我们会在收到事件后立即安排截止日期(作为一种重播机制,尤其是在 JVM 崩溃的情况下),但如果短期进程成功,我们会立即取消它们。也许这个双数据库事务导致了这个问题。有没有更好的方法来解决这个问题?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。