十六、性能
在使用Axon Server操作应用程序时,可能需要对配置进行微调,以使AxonServer以最佳方式运行并充分发挥其潜力。这通常涉及到消息的事件分段/流控制以及关于磁盘存储、O/S特性的一般计算建议。
16.1事件分段
通常,应用程序组件包含一个或多个负责处理传入事件的事件处理器。可在运行时更改处理器的拓扑结构,以适应系统配置的变化
16.1.1增加和减少段数
在多个线程中处理事件的跟踪事件处理器使用段将流中的事件以可靠的方式跨这些线程分离。然而,特别是当这些线程分布在一个组件的多个实例中,并且实例的数量发生变化时,相应地调整段的数量可能是有用的
为此,Axon框架提供了一个拆分和合并API。这个API可以直接使用,也可以通过Axon服务器使用,后者考虑到所需的协调
16.1.1.1通过Axon服务器进行段调整
Axon Server提供了一个API,用于在运行时跨处理器的不同实例触发段数的增加和减少。按照以下步骤增加或减少处理器的段数:
- 在UI中,导航到“组件概述”,然后选择包含要更改其段数的组件的应用程序实例之一。
- 在“组件详细信息”屏幕中,向下滚动到处理器列表。
- 在处理器列表中,单击“缩放”图标打开缩放对话框
- 在缩放对话框中,单击“增加”或“减少”来调整处理器的段数。
使用restapi
例如,UI中暴露的按钮也可以通过REST调用通过curl直接定位。如果需要这种方法,建议检查Swagger UI中的split和merge端点信息。
16.2 流控制
流控制是管理两个节点之间的数据传输速率的过程,以防止快速的发送方压倒慢速的接收方。
在消息传递平台中,可以在消息传递平台和消息处理程序之间以及消息传递平台集群中的节点之间进行流控制。
消息传递平台-消息处理程序:
客户端(即Axon应用程序)需要设置以下属性来配置流控制:
- axon.axonserver.initial-nr of permits[1000]—服务器最初可以发送给客户端的消息数。
- axon.axonserver.nr-新许可数量[500]—服务器可以发送给客户端的额外消息数。
- axon.axonserver.new-允许阈值[500]-当客户端在剩余消息中达到此阈值时,它将发送一个请求,其中包含要接收的额外消息数。
Axon服务器节点:
设置以下属性以设置Axon服务器群集中节点之间同步的流控制:
- axoniq.axonserver.commandFlowControl.initial nr of permits[10000]—主机最初可以发送到副本的消息数。
- axoniq.axonserver.commandFlowControl.nr of new permits[5000]—主机可以发送到副本的额外消息数。
- axoniq.axonserver.commandFlowControl.new permits threshold[5000]-当副本在剩余消息中达到此阈值时,它将发送一个请求,其中包含要接收的额外消息数。
- axoniq.axonserver.queryFlowControl.initial nr of permits[10000]—主机最初可以发送到副本的消息数。
- axoniq.axonserver.queryFlowControl.nr of new permits[5000]—主机可以发送到副本的额外消息数。
- axoniq.axonserver.queryFlowControl.new permits threshold[5000]-当副本在剩余消息中达到此阈值时,它将发送一个请求,其中包含要接收的额外消息数。