【问题标题】:Automatically scale Axon's tracking event processors自动扩展 Axon 的跟踪事件处理器
【发布时间】:2019-03-12 12:14:54
【问题描述】:

我正在使用带有 Spring Boot 的 Axon 框架 4.0.3 进行事件溯源,并拥有一个配置为具有多个段/线程以同时处理事件的跟踪处理器:

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

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

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

理想情况下,它应该能够仅指定每个节点应该使用的线程数。之后,当向处理器添加新节点时,段的数量应相应增加。同样,如果我删除节点,段的数量应该会减少。 Axon 是否可以做到这一点,或者根本就没有设计成以这种方式扩展?

【问题讨论】:

    标签: cqrs event-sourcing axon


    【解决方案1】:

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

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

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

    希望这能给你一些 Archie 的背景知识!

    【讨论】:

    • 太棒了!请继续关注 Archie,我们正在努力为每个人准备好发布。
    • 您知道在任何地方都可以为不断变化(自动缩放)的节点/线程/JVM 数量实现这种拆分/合并的示例吗?这似乎是一个相当复杂的管道,它为应用程序提供了大量机会来找到未覆盖的沙井......
    • 我知道,但这些都是针对客户的,因此我不能分享虽然添加,我很确定 Axon 用户组 [groups.google.com/forum/#!forum/axonframework] 也包含有关此信息。而且,如果它不存在或不在 StackOverflow 上,则会有一个专门的问题来询问(伪)代码。
    猜你喜欢
    • 1970-01-01
    • 2015-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-10
    • 1970-01-01
    • 2012-03-19
    • 2013-08-14
    相关资源
    最近更新 更多