自动扩展 Axon 的跟踪事件处理器

Automatically scale Axon's tracking event processors

我正在使用带有 Spring 引导的 Axon 框架 4.0.3 来获得事件源,并且有一个跟踪处理器被配置为有多个 segments/threads 来同时处理事件:

axon.eventhandling.processors[my_processor].initial-segment-count = 6
axon.eventhandling.processors[my_processor].thread-count = 3

它意味着 my_processor 有 2 个节点,每个节点使用 3 个线程。

但是,此解决方案的问题在于它不可扩展。我必须从一开始就知道我必须有多少个节点和线程,因为以后不可能更改它:如果我增加 initial-segment-count 并重新启动处理器,则什么也不会发生。更糟糕的是,如果我减少段数:永远不会处理用于 "removed" 段的事件!

理想情况下,它应该能够指定每个节点应该使用的线程数。之后,当新节点添加到处理器时,段数应相应增加。同样,如果我删除节点,段数应该按比例减少。这对 Axon 来说可能吗,还是它根本就不是设计成这样缩放的?

您的这个假设是完全正确的 - 只是调整这些字段是不可扩展的,在运行时。 这正是我们在 Axon 应用程序运行时向 split/merge 段引入拆分和合并操作的原因。请参阅 this GitHub 拉取请求以了解其在框架中的介绍。

此功能将成为今天发布的 Axon 4.1 的一部分。 请注意,如果您只使用框架,此功能 不会 为您提供自动缩放。它将需要您的部分实施,利用提供的拆分和合并 API,使其自动化。

另一方面,

Axon Server 在 UI 中为您提供了一个 split/merge 按钮,从而使您不必自己构建它。 我相当确定 Axon Server 最终也会引入自动缩放解决方案,但不会作为 4.1 版的一部分。

希望这能给阿奇一些背景知识!