我使用 Axon 框架 4.0.3 和 Spring Boot 来进行事件溯源,并有一个跟踪处理器,该处理器配置为具有多个段/线程来同时处理事件:
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 是否可以做到这一点,或者它根本就不是为了以这种方式扩展而设计的?
您的这个假设是完全正确的 - 仅调整这些字段是不可扩展的,在运行时。
这正是我们引入拆分和合并操作的原因,以便在 Axon 应用程序运行时拆分/合并片段。看this https://github.com/AxonFramework/AxonFramework/pull/969GitHub pull request 将其引入框架。
该功能将成为今天发布的 Axon 4.1 的一部分。
请注意,如果您仅使用框架,则此功能does not给你自动缩放。它将需要您的部分实施,利用提供的拆分和合并 API,使其自动化。
轴突服务器 https://axoniq.io/product-overview/axon-server另一方面,在用户界面中为您提供了一个拆分/合并按钮,从而使您无需自己构建它。
我相当肯定 Axon Server 最终也会引入自动缩放解决方案,但不会作为 4.1 版本的一部分。
希望这能给您一些阿奇的背景知识!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)