十四、管理

14.1 设置

14.1.1 系统属性

配置文件

最常见和首选的方法是axon server.properties或者\_axon server.yml\**_包含所需配置参数的文件。文件的位置应该是当前工作目录,或者也可以放在“_config_”子目录中(相对于当前工作目录)。

一个重要的注意事项-如果两个文件都被Axon服务器检测到,它将从这两个文件中读取。

命令行

如果服务器使用“java–jar…”启动,我们还可以提供带有“-Dproperty=value”的单个配置属性

环境变量

也可以使用环境变量提供配置值。参数名应全部大写,并用“\”替换任何kebabCase(-)/camelCase和snake_case(-)_

建议

有一些关于Axon服务器EE/SE配置的建议,

  1. 使用”./axonserver.properties“用于普通设置。
  2. 使用“./config/axonserver.properties“用于特定于环境/节点的覆盖。
  3. 使用“-D”或环境变量进行一次性设置。

14.1.1.2 配置属性

下面按区域列出了所有配置属性。除非明确指定,否则所有属性名都将以“作为前缀”axoniq.axonserver",详见下列表格。

https://docs.axoniq.io/reference-guide/axon-server/administration/admin-configuration/configuration - configuration-properties

14.1.2命令行接口

Axon服务器提供了一个命令行实用程序,允许通过脚本或命令行界面更新(axonserver-cli.jar)它作为Axon Server distributable(SE/EE)的一部分提供。

14.1.2.1快速总结

下面简要介绍了各种命令。每个命令都有一个特定的格式,出于安全目的,也可以对其启用访问控制。详见下表:

https://docs.axoniq.io/reference-guide/axon-server/administration/admin-configuration/command-line-interface - quick-summary

14.1.2.1.1格式

所有命令行的普通格式大致是:

java -jar axonserver-cli.jar <Command> <command options> -S <server-to-send-command-to> -t <auth_token>

或者从类似bash的shell运行时:

axonserver-cli.jar <Command>  <command options> -S <server-to-send-command-to> -t <auth_token>

带有指向Axon服务器的url的-S选项是可选的,如果省略了它,则默认为http://localhost:8024.‌对于Axon Server SE,Axon Server SE的URL将是单个运行的节点,对于Axon Server EE,该URL应指向在Axon Server EE群集中服务于‌管理上下文的任何节点。

14.1.2.1.2访问控制

在启用访问控制的情况下运行Axon服务器时,远程执行命令需要访问令牌。这需要与-t选项一起提供。当您从启动Axon服务器的目录在Axon服务器节点本身上运行命令时,您不必提供令牌

对于Axon Server Standard Edition,令牌在axonserver.properties文件(属性名=axoniq.axonserver.token). 在Enterprise Edition中,您需要使用ADMIN角色注册应用程序,并且可以使用该应用程序的令牌远程执行命令行命令。‌令牌需要使用任何命令中的-t选项提供。

14.1.2.2 命令

本节描述命令行界面支持的所有命令,按特定区域分组

14.1.2.2.1用户

当使用启用了访问控制的Axon服务器时,需要定义用户以访问Axon服务器控制台的仪表板。只有READ角色的用户可以查看控制台仪表板中的信息,但不能进行任何更改,具有ADMIN角色的用户可以进行更改

用户

返回所有注册用户及其角色的列表

$ java -jar axonserver-cli.jar users -S http://[node]:[port] -t [token]

可选参数

-S表示要将命令发送到的服务器,如果未提供,则默认连接到http://localhost:8024。对于Axon Server SE,Axon Server SE的URL将是单个正在运行的节点,而对于Axon Server EE,该URL应指向在Axon Server EE集群中为_admin上下文提供服务的任何节点。

-t是指要在命令发送到的服务器上进行身份验证的访问令牌。

注册用户

使用指定的角色注册用户。对于Axon Server SE,只有两个可能的角色是READ/ADMIN,而对于Axon Server EE,可以授予以下角色-ADMIN/CONTEXT_ADMIN/DISPATCH_COMMANDS/DISPATCH_QUERY/MONITOR/PUBLISH_EVENTS/READ_EVENTS/SUBSCRIBE_COMMAND_HANDLER/SUBSCRIBE_QUERY_HANDLER/USE_CONTEXT

除了角色名称,您还可以提供应用此角色的上下文,如{role\uname}@{context_name}。对于Axon Server SE,唯一可用的上下文是默认上下文,因此角色将仅应用于该上下文(因此不需要提供上下文名称)。对于Axon服务器EE,可以根据需要包含特定的上下文。另外,如果在Axon服务器EE中没有提到上下文,则会将角色授予所有注册上下文的用户。

$ java -jar axonserver-cli.jar register-user -u username -r roles [-p password] -S http://[node]:[port] [-t token]

强制性参数

-用户名是指u。

-r表示用户的角色。通过提供逗号分隔列表(不带空格)指定多个角色,例如READ、ADMIN。

-p是用户的密码。如果不使用-p选项指定密码,命令行界面将提示您输入密码

可选参数

-S表示要将命令发送到的服务器,如果未提供,则默认连接到http://localhost:8024。对于Axon Server SE,Axon Server SE的URL将是单个正在运行的节点,而对于Axon Server EE,该URL应指向在Axon Server EE集群中为_admin上下文提供服务的任何节点。

-t是指要在命令发送到的服务器上进行身份验证的访问令牌。

删除用户

删除指定的用户。

$ java -jar axonserver-cli.jar delete-user -u username -S http://[node]:[port] [-t token]

强制性参数

-u是需要删除的用户的用户名。

可选参数

-S表示要将命令发送到的服务器,如果未提供,则默认连接到http://localhost:8024。对于Axon Server SE,Axon Server SE的URL将是单个正在运行的节点,而对于Axon Server EE,该URL应指向在Axon Server EE集群中为_admin上下文提供服务的任何节点。

-t是指要在命令发送到的服务器上进行身份验证的访问令牌。

14.1.2.2.2 Metrics

所有axon特异性指标概述

$ java -jar axonserver-cli.jar metrics -S http://[node]:[port] [-t token]

可选参数

-S表示要将命令发送到的服务器,如果未提供,则默认连接到http://localhost:8024。对于Axon Server SE,Axon Server SE的URL将是单个正在运行的节点,而对于Axon Server EE,该URL应指向在Axon Server EE集群中为_admin上下文提供服务的任何节点。

-t是指要在命令发送到的服务器上进行身份验证的访问令牌。

14.1.2.2.3应用程序(仅限企业版)

应用程序

根据上下文列出所有应用程序和每个应用程序的角色

$ java -jar axonserver-cli.jar applications -S http://[node]:[port] [-t token]

可选参数

-S表示要将命令发送到的服务器,如果未提供,则默认连接到http://localhost:8024。URL应该指向在Axon服务器EE集群中服务于\u admin上下文的任何节点。

-t是指要在命令发送到的服务器上进行身份验证的访问令牌。

注册申请

使用指定的名称和角色注册应用程序。可以授予以下角色-ADMIN/CONTEXT_ADMIN/DISPATCH_COMMANDS/DISPATCH_QUERY/MONITOR/PUBLISH_EVENTS/READ_EVENTS/SUBSCRIBE_COMMAND_HANDLER/SUBSCRIBE_QUERY_HANDLER/USE_CONTEXT

除了角色名称,您还可以提供应用此角色的上下文,如{role\uname}@{context_name}。另外,如果在Axon服务器EE中没有提到上下文,则将角色授予应用程序所有注册的上下文。

此命令返回要使用的生成令牌。请注意,此token只生成一次,如果丢失,则必须删除应用程序并再次注册以获取新token。如果要自己定义token,可以在命令行命令中使用-T标志提供一个token,例如:

$ java -jar axonserver-cli.jar register-application -a name -r roles  [-d description] [-T apptoken] -S http://[node]:[port] [-t token]

强制性参数

-a_**_是指应用程序的名称

-r表示应用程序的角色。通过提供逗号分隔列表(不带空格)指定多个角色,例如READ、ADMIN。

可选参数

-d是指对应用程序的描述。

-S表示要将命令发送到的服务器,如果未提供,则默认连接到http://localhost:8024。URL应该指向在Axon服务器EE集群中服务于\u admin上下文的任何节点。

-t是指要在命令发送到的服务器上进行身份验证的访问令牌。

-T以防您想为新注册的应用程序定义令牌。

删除应用程序

从Axon Server EE中删除应用程序

$ java -jar axonserver-cli.jar delete-application -a name -S http://[node]:[port] [-t token]

强制性参数

-a _**_是指应用程序的名称

可选参数

-S表示要将命令发送到的服务器,如果未提供,则默认连接到http://localhost:8024。URL应该指向在Axon服务器EE集群中服务于\u admin上下文的任何节点。

-t是指要在命令发送到的服务器上进行身份验证的访问令牌。

14.1.2.2.4集群(仅限企业版)

集群

显示群集中的所有节点,包括它们的主机名、http端口和grpc端口。

$ java -jar axonserver-cli.jar cluster -S http://[node]:[port] [-t token]

可选参数

-S表示要将命令发送到的服务器,如果未提供,则默认连接到http://localhost:8024。URL应该指向在Axon服务器EE集群中服务于\u admin上下文的任何节点。

-t是指要在命令发送到的服务器上进行身份验证的访问令牌。

初始化群集

初始化群集,创建\u管理上下文和指定的上下文。

$ java -jar axonserver-cli.jar init-cluster [-c context] -S http://[node]:[port] [-t token]

可选参数

-c是指需要与\u admin上下文一起创建的上下文。如果未指定上下文,则创建默认上下文

-S表示要将命令发送到的服务器,如果未提供,则默认连接到http://localhost:8024。URL应该指向在Axon服务器EE集群中服务于\u admin上下文的任何节点。

-t是指要在命令发送到的服务器上进行身份验证的访问令牌。

寄存器节点

向群集注册Axon服务器节点。

$ java -jar axonserver-cli.jar register-node -h node-internal-host-name [-p internal-grpc-port] [-c context] -S http://[node]:[port] [-t token]

如果指定上下文,则新节点将是指定上下文的成员。如果尚未指定上下文,则新节点将成为所有已定义上下文的成员

强制性参数

-h是需要添加到集群的节点的内部主机名。

可选参数

-p是需要添加到集群的节点的内部gRPC端口。默认为8224。

-c指的是这个axon服务器节点将成为其成员的上下文。如果没有指定上下文,则新节点将成为所有已定义上下文的成员。

--任何上下文都不会将节点添加到集群中,但不会将其注册到任何已定义的上下文中。

-S表示要将命令发送到的服务器,如果未提供,则默认连接到http://localhost:8024。URL应该指向在Axon服务器EE集群中服务于\u admin上下文的任何节点。

-t是指要在命令发送到的服务器上进行身份验证的访问令牌。

注销节点

从群集中删除具有指定名称的节点。在此之后,被删除的节点仍将以独立模式运行

$ java -jar axonserver-cli.jar unregister-node -n nodename‌ -S http://[node]:[port] [-t token]

强制性参数

-n是指需要从集群中删除的节点的名称。

可选参数

-S表示要将命令发送到的服务器,如果未提供,则默认连接到http://localhost:8024。URL应该指向在Axon服务器EE集群中服务于\u admin上下文的任何节点。

-t是指要在命令发送到的服务器上进行身份验证的访问令牌。

更新许可证

将新的许可证文件上载到群集。Axon服务器将新的许可证文件分发到群集中的所有节点。

$ java -jar axonserver-cli.jar update-license -f [license-file] -S http://[node]:[port] [-t token]

强制性参数

-n是指需要从集群中删除的节点的名称。

-f是指包含要更新的许可证的文件。

可选参数

-S表示要将命令发送到的服务器,如果未提供,则默认连接到http://localhost:8024。URL应该指向在Axon服务器EE集群中服务于\u admin上下文的任何节点。

-t是指要在命令发送到的服务器上进行身份验证的访问令牌。

14.1.2.2.5复制组(仅限企业版)

复制组

列出所有复制组和分配给复制组的节点。对于每个复制组,它显示复制组的名称、复制组的主节点和复制组的成员节点,

$ java -jar axonserver-cli.jar replication-groups -S http://[node]:[port] [-t token]

可选参数

-S表示要将命令发送到的服务器,如果未提供,则默认连接到http://localhost:8024。URL应该指向在Axon服务器EE集群中服务于\u admin上下文的任何节点。

-t是指要在命令发送到的服务器上进行身份验证的访问令牌。

-o json将以json格式显示输出。

注册复制组

register replication group命令有助于注册和创建新的复制组。带有强制参数的命令示例如下所示:

$ java -jar ./axonserver-cli.jar register-replication-group  -c [context-name] -n [members]‌ -a [members] -m [members] -p [members] -s [members] -S http://[node]:[port] [-t token]

强制性参数

-c表示复制组名。复制组名称必须与以下正则表达式“[a-zA-Z][a-zA-Z_-0-9]*”匹配,因此它应该以字母(大写或小写)开头,后跟字母、数字、连字符和下划线的组合。

-n表示应该是新复制组成员的节点名的逗号分隔列表。此参数将它们注册为该上下文的“主”成员节点。

可选参数

-S如果未提供,则默认连接到http://localhost:8024。如果提供,则它应该是服务于\u admin上下文的任何节点。

-a是指应该是该复制组的“活动备份”成员节点的节点名称的逗号分隔列表。

-m是指以逗号分隔的节点名列表,这些节点名应该是该复制组的“仅消息传递”成员节点。

-p表示应该是该复制组的“被动备份”成员节点的节点名的逗号分隔列表。

-p表示应该是该复制组的“辅助”成员节点的节点名的逗号分隔列表。

-t是指要在命令发送到的服务器上进行身份验证的访问令牌。

删除复制组

delete replication group命令有助于从复制组的所有成员节点中删除复制组及其关联数据。带有强制参数的命令示例如下所示:

$ java -jar ./axonserver-cli.jar delete-replication-group  -g [replication-group-name] -S http://[node]:[port]

强制性参数

-g表示需要删除的复制组。

可选参数

-S如果未提供,则默认连接到http://localhost:8024。如果提供,则它应该是服务于\u admin上下文的任何节点。

-t是指要在命令发送到的服务器上进行身份验证的访问令牌。

--preserve-event-store选项保留复制组中所有节点的所有事件存储数据(默认为false)

将节点添加到复制组

addnode to replication group命令有助于注册现有复制组的新成员节点。

$ java -jar ./axonserver-cli.jar add-node-to-replication-group -g [replication-group-name] -r [role of the node] -n [node name] -S http://[node]:[port] [-t token]‌

强制性参数

-g表示现有的复制组。

-n是指应该是此复制组成员的节点名。

-r表示此节点在复制组中的角色(主/仅限消息传递/主动备份/被动备份/辅助)。

可选参数

-S如果未提供,则默认连接到http://localhost:8024。如果提供,则它应该是服务于 _admin上下文的任何节点。

-t是指要在命令发送到的服务器上进行身份验证的访问令牌。

从复制组中删除节点

delete node from replication group命令有助于从现有复制组中删除成员节点。带有强制参数的命令示例如下所示:

$ java -jar ./axonserver-cli.jar delete-node-from-replication-group

-g [replication-group-name] -n [node name] -S http://[node]:[port] [-t token]‌

强制性参数

-g表示现有的复制组。

-n表示不再是此上下文成员的节点名。

可选参数

-S如果未提供,则默认连接到http://localhost:8024。如果提供,则它应该是服务于_admin上下文的任何节点。

-t是指要在命令发送到的服务器上进行身份验证的访问令牌。

----preserve-event-store从复制组中删除节点,但将事件存储文件保留在该节点上。

14.1.2.2.6上下文(仅限企业版)

上下文‌

列出所有上下文和分配给上下文的节点。对于每个上下文,它显示上下文的名称、上下文的主节点和上下文的成员节点

$ java -jar axonserver-cli.jar contexts -S http://[node]:[port] [-t token]

可选参数

-S表示要将命令发送到的服务器,如果未提供,则默认连接到http://localhost:8024。URL应该指向在Axon服务器EE集群中服务于\u admin上下文的任何节点。

-t是指要在命令发送到的服务器上进行身份验证的访问令牌。

-o json将以json格式显示输出。

寄存器上下文

register context命令有助于注册和创建新上下文。带有强制参数的命令示例如下所示:

$ java -jar ./axonserver-cli.jar register-context  -c [context-name] -g [replication-group-name] -n [members]‌ -a [members] -m [members] -p [members] -S http://[node]:[port] [-t token]

如果不提供现有的复制组名称,则需要提供要包含在要创建的复制组中的节点的名称和角色。如果不提供复制组名称,但提供节点,则它将创建一个与上下文同名的复制组。

强制性参数

-c表示上下文名称。上下文名称必须匹配以下正则表达式“[a-zA-Z][a-zA-Z_-0-9]*”,因此它应该以字母(大写或小写)开头,后跟字母、数字、连字符和下划线的组合。

可选参数

-S如果未提供,则默认连接到http://localhost:8024。如果提供,则它应该是服务于_admin上下文的任何节点。

-g表示复制组的名称

-n表示应该是新上下文成员的节点名的逗号分隔列表。此参数将它们注册为该上下文的“主”成员节点。

-a指的是逗号分隔的节点名列表,这些节点名应该是该上下文的“ACTIVE_BACKUP”成员节点。

-m指的是逗号分隔的节点名列表,这些节点名应该是该上下文的“仅消息传递”成员节点。

-p是指逗号分隔的节点名列表,这些节点名应该是该上下文的“被动备份”成员节点。

-s表示应该是该上下文的“次要”成员节点的节点名的逗号分隔列表。

-t是指要在命令发送到的服务器上进行身份验证的访问令牌。

删除上下文

delete context命令有助于从上下文的所有成员节点中删除上下文及其关联数据。带有强制参数的命令示例如下所示:

$ java -jar ./axonserver-cli.jar delete-context  -c [context-name] -S http://[node]:[port]

强制性参数

-c表示需要删除的上下文。

可选参数

-S如果未提供,则默认连接到http://localhost:8024。如果提供,则它应该是服务于_admin上下文的任何节点。

-t是指要在命令发送到的服务器上进行身份验证的访问令牌。

--preserve-event-store选项以保留事件存储数据(默认为false)。

14.1.3 Rest API

Axon服务器同样支持使用rest api来更改它自己的配置,如下所示:

完整的API文档可从{AXON_SERVER_URL}/swagger-ui.html界面获得。

14.2监控

AxonServer提供了一组执行器端点、gRPC指标和心跳监测功能,这些功能有助于监控AxonServer SE/EE部署的重要方面。

这些帮助包括:

  1. 检索有关AxonServer的基本信息
  2. 监视AxonServer的总体运行状况
  3. 检索关于OS/JVM的指标
  4. 检索消息(命令/查询/事件)流度量
  5. 检索AxonServer的环境属性

14.2.1执行器端点

对于监控,AxonServer集成了Spring Boot执行器端点,这些端点位于AxonServer的/Actuator URL路径下。对于Axon Server SE,Axon Server SE的URL将是单个运行的节点,而对于Axon Server EE,URL应指向Axon Server EE群集中服务于‌管理上下文的任何节点。

/actuatorURL路径返回所有可用执行器的列表。端点列表如下所示。

/actuator/health端点用于检查Axon服务器本身的运行状况,以及(对于Axon服务器EE)集群的运行状况。当集群运行状况不是“UP”时,HTTP状态返回码不是200。

/actuator/info端点通知您有关AxonServer的一些基本属性(名称、说明、版本)。这对于活跃度/准备状态探测更有用。

/actuator/metrics端点发布有关操作系统、JVM以及应用程序级度量的信息

/执行器/记录器端点显示记录器配置的详细视图

/actuator/prometheus端点以可由prometheus服务器(监控系统和时间序列数据库)获取的格式公开度量数据

/actuator/env端点公开当前环境属性

应用程序等级指标

在/actuator/metrics endpoint:‌

/actuator/metrics/axon.events.count当前存储在节点中的事件数

/actuator/metrics/axon.commands.count当前存储在节点中的命令数

/actuator/metrics/axon.queries.count当前存储在节点中的查询数

/actuator/metrics/axon.snapshots.count节点中存储的当前快照数

/actuator/metrics/axon.commands.active节点中当前活动命令数

同时,AxonServer特定的端点可以通过/swagger-ui.html浏览.

14.2.2 gRPC Metrics

要启用gRPC Metrics,对于Axon服务器,需要在axonserver.properties设置一下(或.yaml文件)。

14.2.3 心跳监测

您可以在Axon Server中启用心跳监视,以便激活对客户端连接可用性的高级监视

由于gRPC已经提供了一个内部心跳信号,因此这个特性实际是为了覆盖gRPC不能实现的场景。

可以通过配置以下属性来启用此功能:

axoniq.axonserver.heartbeat.enabled=true

请注意,为了使此功能正常工作,客户端还应启用心跳监测功能

默认情况下,该功能处于禁用状态;可以通过以下方式启用:

Axon API 设置:

Configurer configurer = DefaultConfigurer.defaultConfiguration()

.registerModule(new HeartbeatConfiguration());

Springboot设置:

通过设置下列属性:
axon.axonserver.heartbeat.auto-configuration.enabled=true

注意:AXON从4.2.1版本才开始支持心跳检测功能。

14.3集群

注意,本功能仅集成于axon server EE中。

14.3.1介绍

Axon Server Enterprise Edition可以作为集群部署,以保证高可用性。Axon服务器EE节点集群将为(基于Axon框架的)客户端应用程序提供多个连接点,从而分担管理消息传递和事件存储的负载。客户端应用程序将动态连接到群集中的一个节点,并自动重新连接到另一个节点(如果它们当前连接的节点无法访问)。

Axon服务器EE集群有3个主要的管理区域,

  1. 集群节点——需要成为EE集群一部分的Axon服务器EE的“实例”。
  2. 复制组——负责群集的各个节点之间的事件数据复制和事务管理。
  3. 上下文——负责集群的各个节点中的事件存储。

下面显示了三者之间关系的直观表示

14.3.2安装过程

集群设置过程总是首先指定任何一个干净/未初始化的Axon服务器EE节点作为集群的第一个成员。然后您可以在其上运行“init cluster”命令,该命令将创建以下复制组和上下文->admin/default。

因此,根据事件存储部署拓扑,有多种方法可以继续安装。

  1. 可以使用“register node”命令将任何其他Axon服务器EE节点添加到集群中,而无需将其与任何复制组/上下文相关联。
  2. 可以添加新的复制组/上下文,并且可以将集群成员节点与这些组/上下文关联。
  3. 成员节点可以在任何时候从集群中移除。

Axon提供了两种自动化集群配置的方法。第一个是自动初始化功能,另一个是集群模板功能。

14.3.2.1自动初始化

通过在axonserver.properties文件。

axoniq.axonserver.autocluster.first=内部-主机名:内部端口axoniq.axonserver.autocluster.contexts=context1,上下文2

这个axoniq.axonserver.autocluster.first属性通过指定其内部主机名(其他Axon服务器节点用于连接到此主机的主机名)和内部端口来定义群集中的第一个节点。如果内部端口为默认端口(8224),则可以省略

axoniq.axonserver.autocluster.contexts定义要在第一个节点上创建的上下文和要为其他节点连接的上下文。所有这些上下文都将作为主节点连接。当不指定任何上下文时,初始节点将只创建一个管理上下文,其他节点将加入集群,而不是任何上下文的成员

自动群集属性仅在节点干净启动时生效。如果一个节点已经初始化,它将不再创建任何上下文,也不会再次加入集群

14.3.2.2群集模板

注意-此功能仅在Axon Server Enterprise中提供(从v4.4开始)

集群模板被定义为描述集群配置的YAML文件。可以预定义复制组、上下文、元数据、应用程序(带token)、用户及其角色,以便可以跨团队共享配置。

如果没有定义以前的集群配置,集群模板只在第一次干净的Axon服务器启动时运行一次。因此,集群模板不会覆盖任何现有配置。它的目的是在活动开发期间使用,以便能够在开发团队之间共享配置。

使用

要使用集群模板功能,只需定义一个有效的集群模板yml文件。如果新启动的Axon服务器上存在此文件,则会自动获取该文件,并相应地配置集群。

每个集群节点都需要有集群模板yml文件副本。每个节点将读取此文件,找到自己的配置并配置自己。

Axon服务器从中读取配置的默认路径是./cluster-模板.yml

您可以通过设置Axon服务器属性随时覆盖此路径:axoniq.axonserver.clustertemplate.path:/mypath/cluster-模板.yml

配置

下面您可以找到一个基本群集设置的示例:“_admin”和“default”上下文位于不同的复制节点中,在所有标记为主节点的节点上进行复制。

axoniq:

axonserver:

cluster-template:

first: internal-hostname:internal-port

replicationGroups:

- name: _admin

roles:

- node: axonserver-enterprise-1

role: PRIMARY

- node: axonserver-enterprise-2

role: PRIMARY

- node: axonserver-enterprise-3

role: PRIMARY

contexts:

- name: _admin

- name: default

roles:

- node: axonserver-enterprise-2

role: PRIMARY

- node: axonserver-enterprise-3

role: PRIMARY

- node: axonserver-enterprise-1

role: PRIMARY

contexts:

- name: default

applications: []

users: []

应用默认配置后的群集概述

导出/生成器

为了避免在编写集群配置文件时出错,我们实现了一个导出按钮,该按钮将根据当前设置生成集群模板文件。

本地导出按钮配置页

推荐的机制——创建高级群集设置

  1. 启动新的Axon服务器设置(使用上面提到的基本集群模板设置)。通过创建用户、应用程序、复制组和上下文,通过UI配置群集。
  2. 使用位于“设置->配置”面板的导出按钮下载当前群集配置。
  3. 将基本集群模板替换为新导出的集群模板配置。

从任何管理节点使用导出按钮以确保配置文件包含所有相关信息。

14.4复制组(主从复制)

在单个群集中,您可以定义复制组。复制组负责集群内不同节点之间的事务协调和事件数据复制。

下面描述了复制组的可视化表示:

每个节点在复制组中都有一个特定的角色。复制组中的节点将选举一个负责管理复制组中事务的领导。在复制组中,可以定义多个上下文(请参阅“多上下文”部分中的)。

14.4.1节点角色

定义复制组时,将分配为该复制组服务的节点。

节点在上下文中可以具有不同的角色:

  1. “主”节点是该复制组中功能齐全(且具有表决权)的成员。复制组对客户端应用程序可用需要大多数主节点。
  2. “仅消息传递”成员将不提供事件存储,并且(因为它不涉及事务)是复制组的无表决成员。
  3. “活动备份”节点是一个投票成员,它为复制组中的每个上下文提供事件存储,但它不提供消息传递服务,因此客户端不会连接到它。请注意,如果要保证备份是最新的,则必须至少有一个活动备份节点需要启动。
  4. “被动备份”将提供事件存储,但不参与事务甚至选举,也不提供消息服务。它的启动或关闭不会影响复制组的可用性,而且一旦恢复联机,领导者将发送维护期间累积的任何事件。
  5. 最后,“辅助”节点将提供事件存储,但不参与事务甚至选举,也不提供消息服务。在维护过程中积累的所有事件,一旦恢复在线,领导者就会将其发送出去。当复制组中有辅助节点时,主节点将只在其事件存储中保留最新的数据。

有多个选项可用于向复制组中的节点分配角色。命令行界面部分在clusters和replication groups子部分中对此进行了详细说明。

14.4.2共识/选举

服务于特定上下文的所有节点都维护一个完整的副本,并由一个“复制头”控制分布式事务。领袖由选举决定,遵循RAFT协议。一个重要的后果与这些选举有关:节点需要能够赢得选举,或者至少能感受到明显多数的支持,也就是说,要有一个对上下文有效的领导者,大多数节点必须是活动的(例如,当你有一个有3个节点的集群时,你至少需要2个活动节点,对于4个节点的集群,你需要3个活动节点节点)负责人协调分布式事务(即节点之间的数据复制),并在提交事务时向客户端确认。

一个Axon server集群中不需要奇数个复制节点,而单个复制组却需要奇数个节点。这也适用于名为“_admin”的内部复制组,它由管理节点使用并存储集群结构数据。因此,大多数集群将具有奇数个节点,并且只要大多数(对于特定复制组)正在响应和存储事件,它们都将保持运行。

特殊复制组

Axon服务器EE有一个特殊的复制组和上下文,称为“_admin”。此上下文用于处理Axon Server中的所有配置更改,因此它包含所有复制组从中获取其信息的主配置。‌您不能向“_admin”复制组添加其他上下文。

14.5 多上下文

注意:此结构仅用于axon server EE。

回顾一下我们在集群部分中看到的定义,上下文允许数据的强隔离,而不需要部署和管理完整的实例。

可以设置Axon服务器EE集群来存储多个上下文的事件。每个上下文都有自己的一组文件(包含事件/快照数据)存储在单独的目录中。Axon服务器将根据上下文分配到的复制组将上下文数据复制到多个节点。创建上下文时,可以将其添加到已存在的复制组中,也可以为此上下文创建新的复制组。有关复制组的更多信息,请参阅复制组部分。

每个上下文在每个成员节点上都有一个单独的物理目录。默认情况下,此目录由axoniq.axonserver.events.storage和axoniq.axonserver.snapshot.storage属性。每个上下文在属性指定的位置下获取一个子目录。创建时可以指定不同的位置。

下面描述了一个Axon服务器EE集群中的多个注册上下文:

clustering部分详细介绍了在创建新的Axon服务器集群时创建的_admin和默认上下文。_admin上下文用于处理Axon服务器中的所有配置更改,因此它包含主配置,所有上下文从中获取信息。_admin上下文没有事件存储,配置信息存储在控件数据库中。默认上下文是客户端在未指定任何上下文信息时使用的上下文。如果您希望在不创建默认上下文的情况下创建集群,建议使用自动初始化功能,在该功能中可以显式控制可以创建或不创建哪些上下文。

创建上下文时,可以重写许多默认属性,特别是对于上下文。这些是:

索引格式

从4.4版开始,Axon Server有一种新的事件和快照索引格式,称为JUMP_SKIP_index。这是从此版本以后创建的所有上下文的默认格式。此索引格式使用全局索引来定位特定聚合的最后一个事件,并为每个聚合段维护上一个事件的位置。它提高了查找分布在相距较远的段上的聚合的效率。例如,如果您有2000个事件段,而一个聚合在1500、1000和500段中有事件,则使用此索引,Axon Server将使用全局索引查找最新事件,然后从1500段的索引中找到前一个事件在1000段中。这将阻止检查(索引)之间的所有文件。使用此索引时,Axon服务器将不再创建bloom筛选器文件。对于现有的上下文,索引格式将保持为BLOOM_FILTER_index。

4.4之前的上下文删除

请注意,当您使用preserve data选项删除一个现有的上下文,然后重新创建它,而不指定索引格式,Axon服务器将使用JUMP_SKIP_索引格式。这意味着它将为现有数据创建一个新的索引,如果旧格式是BLOOM_FILTER_index。根据事件存储的大小,这可能需要很长时间。

14.5.1多层存储

Axon Server 4.4版提供的另一个功能是多层存储。使用此选项,您可以选择仅在主节点上保留最新的事件存储,并在辅助节点上保留完整的事件存储。主节点可以有快速(更昂贵)的磁盘,而辅助节点可以有更便宜的磁盘。由于大多数读取通常是在最新的数据上进行的,因此它可以在不影响性能的情况下降低存储成本。将使用时间属性在主节点上设置保留时间段。Axon服务器提供全局设置,可以编写axonserver.properties文件,它允许您在上下文级别设置保留时间。要使用多层存储功能,上下文的复制组必须具有具有辅助角色的节点。建议至少有2个节点具有辅助角色,以防止单点故障。

14.5.2上下文维护

在Axon服务器EE集群中对上下文的操作维护可以通过以下提供的任何一个实用程序来完成:

  1. CLI(axonserver-命令行.jar)由Axon Server EE提供
  2. Axon Server EE的UI控制台
  3. Axon服务器EE提供的rest api

让我们更详细地研究这些功能。

14.5.2.1命令行界面

Axon的命令行实用程序(axonserver-命令行.jar-Axon服务器的一部分可分发)提供了以下操作和维护上下文的选项

创建上下文

register context命令有助于注册和创建新上下文。下面描述了带有强制参数的命令示例

$ java -jar ./axonserver-cli.jar register-context -S http://[node]:[port] -c [context-name] -n [members]

这将使用指定的成员节点创建一个具有上下文名称的新复制组,并在此复制组中创建上下文。

另一个例子:$ java -jar ./axonserver-cli.jar register-context -S http://[node]:[port] -c [context-name] -g [replication-group] -prop event.storage=[location]  -prop snapshot.storage=[location]

这将在已存在的复制组中创建一个新上下文。事件和快照文件存储在指定的位置。

强制性参数

-c表示上下文名称。上下文名称必须匹配以下正则表达式“[a-zA-Z][a-zA-Z_-0-9]*”,因此它应该以字母(大写或小写)开头,后跟字母、数字、连字符和下划线的组合。

可选参数

-S如果未提供,则默认连接到http://localhost:8024。如果提供,它应该是服务于_admin上下文的任何节点

-g是将要添加上下文的复制组的名称

-n表示应该是新上下文成员的节点名的逗号分隔列表。此参数将它们注册为该上下文的“主”成员节点

-a指的是逗号分隔的节点名列表,这些节点名应该是该上下文的“活动备份”成员节点

-m指的是逗号分隔的节点名列表,这些节点名应该是该上下文的“仅消息传递”成员节点

-p是指逗号分隔的节点名列表,这些节点名应该是该上下文的“被动备份”成员节点

-s表示应该是该上下文的“次要”成员节点的节点名的逗号分隔列表

-prop是指可以为新上下文设置的属性。值的格式应为\=\

-t表示要在服务器上进行身份验证的访问令牌

删除上下文

delete context命令有助于从上下文的所有成员节点中删除上下文及其关联数据。下面描述了带有强制参数的命令示例:

$ java -jar ./axonserver-cli.jar delete-context -S http://[node]:[port] -c [context-name]

强制性参数

-c表示需要删除的上下文

可选参数

-S如果未提供,则默认连接到http://localhost:8024。如果提供,它应该是服务于_admin上下文的任何节点

-t表示要在服务器上进行身份验证的访问令牌

--preserve event store”选项在删除上下文时保留事件存储文件(Axon服务器默认删除事件文件)

向上下文添加节点

addnode to context命令有助于注册新成员节点,创建现有上下文。下面描述了带有强制参数的命令示例

$ java -jar ./axonserver-cli.jar add-node-to-context -S http://[node]:[port] -c [context-name] -r [role of the node] -n [node name]

强制性参数

-c指的是现有的上下文

-n是指应该是此上下文成员的节点名

-r表示该节点在上下文中的角色

可选参数

-如果未提供,则默认连接到http://localhost:8024。如果提供,它应该是服务于\u admin上下文的任何节点

-t表示要在服务器上进行身份验证的访问令牌

从上下文中删除节点

delete node from context命令有助于从现有上下文中删除成员节点。下面描述了带有强制参数的命令示例:

$ java -jar ./axonserver-cli.jar delete-node-from-context -S http://[node]:[port] -c [context-name] -n [node name]

强制性参数

-c指的是现有的上下文

-n表示不再是此上下文成员的节点名

可选参数

-如果未提供,则默认连接到http://localhost:8024。如果提供,它应该是服务于_admin上下文的任何节点

-t表示要在服务器上进行身份验证的访问令牌

--preserve-event-store从上下文中删除节点,但将事件存储文件保留在该节点上。

列出所有上下文

contexts命令列出集群中注册的所有上下文,包括其名称、上下文的leader-member节点和上下文中的所有成员节点

$ java -jar ./axonserver-cli.jar contexts

可选参数

-o json将以json格式显示输出

14.5.2.2用户界面

另一个维护上下文的方法是通过Axon服务器EE的UI控制台。导航到控制台导航菜单上的上下文图标,该图标将打开上下文维护屏幕。上面列出的操作可以通过控制台进行。

14.5.2.3 REST API

AxonServerEE提供了一个RESTAPI来执行上下文维护操作。API可在http:[server]:[port]/swagger访问-用户界面.html并提供上下文rest控制器来帮助执行上下文维护操作

14.6 标签

您可以在Axon中为两种不同的情况使用标记:

  1. 您想要控制哪个命令处理程序或查询处理程序执行命令或查询,或者
  2. 您想要控制特定客户机连接到哪个Axon服务器节点。

14.6.1基于标记的路由

注意

此功能仅适用于Axon Server 4.4版以后的版本。

Axon服务器将命令或查询中提供的元数据元素与命令和客户端处理应用程序上定义的标记相匹配。例如,可以用国家代码标记命令,并在处理程序应用程序的标记中设置国家代码。在本例中,Axon服务器将尝试找到具有相同国家代码的命令处理程序,并将命令发送给该处理程序。如果发现多个应用程序具有针对所请求命令和匹配标记的命令处理程序,则Axon服务器将根据提供的路由密钥选择一个。如果没有找到具有匹配标记的应用程序,也会发生同样的情况,因此命令不会因为没有匹配的标记而失败。当然,您可以在一个应用程序上有多个标记,Axon服务器将选择具有最多匹配标记的一个。

14.6.2连接分布

注意

企业版的Axon和Axon Server 2.4版兼容。

为了优化framework客户机和Axon服务器之间的连接,可以使用描述这些客户机和节点属性的信息来标记客户机和Axon服务器。Axon服务器将使用这些标记与客户端建立连接

一个典型的标签可以描述相应的客户机和服务器节点的运行位置(例如云提供商的区域),鼓励建立最近、最快的连接

14.6.3标记匹配

当标签和标记的值匹配时,将进行匹配。例如,标记为computeRegion=europe的服务器将与computeRegion=europe的客户机标记相匹配。类似地,如果一个服务器被标记为computeRegion=europe,而客户机被标记为computeRegion=asia,则这不被视为匹配项

如果客户端和服务器都用多个标记标记,则所建立的连接将基于最大匹配数。如果多个节点具有相同数量的匹配标记,则选择负载最轻的节点

如果根本没有匹配的标记可用,它将连接到任何可用的节点。

14.6.4启用标记

要启用标记,必须同时配置客户端和服务器。

14.6.4.1 Axon服务器

可以使用属性为每个节点配置所需的标记axoniq.axonserver.tags.computeRegion=europe。可以通过添加到tags元素(例如。axoniq.axonserver.tags.networkSpeed=fast)

14.6.4.2客户端

在客户端,有两种方法可以指定标记。属性文件在springboot环境中展开(类似于服务器配置,也允许添加其他标记),或者将TagsConfiguration对象注册到Configurer。

Axon配置部分

Map<String, String> tags = new HashMap();

// Insert tags

DefaultConfigurer.defaultConfiguration()

.configureTags(config -> new TagsConfiguration(tags));

Springboot配置

axon.tags.computeRegion=Europe

14.7备份节点和只进行消息传递的节点

此部分仅在4.3版本以上的 Axon server EE中可用。

当您有更大的集群和特定的需求时,您可能希望节点在复制组中以不同的方式运行。因此,在AxonServerEnterprise4.3中,我们引入了许多可以分配给节点的新角色。

这些是:

  1. 主节点->这是4.3之前的节点的角色。主节点处理客户端连接和消息,存储事件,并可以充当复制组的领导者。
  2. 备份节点->这些节点维护事件存储的副本,但永远不会成为复制组的领导者。有两种类型的备份节点-主动备份和被动备份
  3. 仅消息传递节点->它们处理客户端连接和所有类型的消息(命令/查询/事件),但它们没有事件存储。
  4. 辅助节点->支持多层存储。如果复制组包含辅助节点,则主节点将仅保留最近的数据。

每个复制组至少需要有一个主节点。此节点能够成为领导者,并在不同成员节点之间跨复制组协调事务。即使您不使用Axon Server作为事件存储,您仍然需要一个领导者,因为事务还包括更改复制组配置和访问控制列表。也可以更改特定节点在上下文中所扮演的角色。

14.7.1备份节点

例如,当您希望确保在另一个数据中心拥有事件存储的副本时,可以使用备份节点。由于客户端永远不会连接到备份节点,而且备份节点也永远不会成为复制组的领导者,因此与在另一个数据中心中拥有普通(主)节点相比,它降低了高延迟的风险。重申一下,客户机永远不会直接连接到备份节点。

备份节点有两种类型

14.7.1.1活动备份节点

活动备份节点通过成为事务的活动参与者来维护事件存储的实时副本。为了扩展这一点,假设Axon服务器EE集群中的一个复制组分配了活动备份节点(除了主节点之外)。当在上下文中引发事件时,只有在从至少一定数量的活动备份节点成功接收到确认时,才会确认要在事件存储中提交该事件的事务。

通过更改属性的值,可以自定义事务中涉及的活动备份节点的数量axoniq.axonserver.replication.min活动备份。此参数的默认值为“1”,这意味着如果您有活动备份节点,则至少有一个节点需要随时启动。为此属性设置的值越大,成功事务所需的活动备份成员节点数就越大,因此此属性会影响群集的可用性,因此需要小心管理。

有三种方法可以将活动的“备份”角色分配给复制组中的节点:

A) Axon服务器EE UI控制台。导航到控制台导航菜单上的复制组图标,该图标将打开复制组维护屏幕。可以将节点添加为复制组中的活动备份角色。

B) “将节点添加到复制组”命令,角色选项为“活动备份”

$ java -jar axonserver-cli.jar add-node-to-replication-group  -S http://[node]:[port] -n [node name] -g [replication-group-name] -r PASSIVE_BACKUP

强制性参数

-g是指现有的复制组

-n是指应该是此复制组成员的节点名

-r as PASSIVE_BACKUP是指此节点在复制组中的角色

可选参数

-S如果未提供,则默认连接到http://localhost:8024。如果提供,它应该是服务于_admin上下文的任何节点

-t表示要在服务器上进行身份验证的访问令牌

C) Axon服务器EE提供了restapi(http:[server]:[port]/swagger-ui.html)它提供了复制组rest控制器来帮助执行角色维护操作

14.7.1.2被动备份节点

被动备份节点在尽最大努力的基础上跟随主节点。如果它们断开连接一段时间,则不会影响复制组的总体可用性。一旦被动备份节点再次连接,它们将使用在它们消失时添加的事件更新其事件存储。如果您不要求备份节点在任何时候都是最新的,您可以配置一个被动备份节点

有三种方法可以将被动备份角色分配给复制组中的节点:

A) Axon服务器EE UI控制台。导航到控制台导航菜单上的复制组图标,该图标将打开复制组维护屏幕。可以将节点添加为复制组中的被动备份角色。

B) “将节点添加到复制组”命令,角色选项为“被动备份”

$ java -jar axonserver-cli.jar add-node-to-replication-group  -S http://[node]:[port] -n [node name] -g [replication-group-name] -r PASSIVE_BACKUP

强制性参数

-g是指现有的复制组

-n是指应该是此复制组成员的节点名

-r as PASSIVE_BACKUP是指此节点在复制组中的角色

可选参数

-S如果未提供,则默认连接到http://localhost:8024。如果提供,它应该是服务于_admin上下文的任何节点

-t表示要在服务器上进行身份验证的访问令牌

C) Axon服务器EE提供了restapi(http:[server]:[port]/swagger-ui.html)它提供了复制组rest控制器来帮助执行角色维护操作

14.7.2仅消息传递节点

如果不希望将Axon Server用作事件存储,或者希望为单个复制组使用大量Axon Server节点,而不在每个节点上存储事件,则可以将节点作为仅消息传递节点添加到复制组中。顾名思义,仅消息传递节点只路由消息,它们本身不存储事件。它们不参与事务,而且显然永远不会成为复制组的领导者。

有三种方法可以将仅消息传递角色分配给复制组中的节点:

A) Axon服务器EE UI控制台。导航到控制台导航菜单上的复制组图标,该图标将打开复制组维护屏幕。可以将节点添加为复制组中仅限消息传递的角色。

B) “将节点添加到复制组”命令,其中角色选项仅作为消息传递

$ java -jar axonserver-cli.jar add-node-to-replication-group  -S http://[node]:[port] -n [node name] -g [replication-group-name] -r MESSAGING_ONLY

强制性参数

-c表示现有的复制组

-n是指应该是此复制组成员的节点名

-r as MESSAGING_ONLY 指在复制组中它的角色节点

可选参数

-S如果未提供,则默认连接到http://localhost:8024。如果提供,它应该是服务于_admin上下文的任何节点

-t表示要在服务器上进行身份验证的访问令牌

C) Axon服务器EE提供了restapi(http:[Server]:[port]/swagger-用户界面.html)它提供了复制组rest控制器来帮助执行角色维护操作

14.7.2.1辅助节点

仅用于Axon Server 4.4版及更高版本

如果要限制主节点上存储的数据量,可以将节点作为辅助节点添加到复制组中。例如,您可以在主节点上使用快速(更昂贵)的存储,在辅助节点上使用更便宜的存储。大多数活动都是在最近的数据上进行的,只有当您需要访问较旧的数据时,才必须转到辅助节点。

为复制组定义了辅助节点后,这将适用于复制组中定义的所有上下文。您可以为每个上下文配置保留时间,因此对于某些上下文,您的保留时间可能比其他上下文长。

由于旧数据仍然需要可用,因此至少有一个辅助节点需要一直处于运行状态。主节点不会从其事件存储中删除信息,除非所有辅助节点都有此信息。

有三种方法可以将辅助角色分配给复制组中的节点:

A) Axon服务器EE UI控制台。导航到控制台导航菜单上的复制组图标,该图标将打开复制组维护屏幕。可以将节点添加为复制组中仅限消息传递的角色。

B) “将节点添加到复制组”命令,角色选项为辅助。

$ java -jar ./axonserver-cli.jar delete-node-from-replication-group -S http://[node]:[port] -g [replication-group-name] -n [node name]

强制性参数

-c表示现有的复制组

-n是指应该是此复制组成员的节点名

-r as SECONDARY是指此节点在复制组中的角色

可选参数

-S如果未提供,则默认连接到http://localhost:8024。如果提供,它应该是服务于_admin上下文的任何节点

-t表示要在服务器上进行身份验证的访问令牌

C) Axon服务器EE提供了restapi(http:[server]:[port]/swagger-ui.html)它提供了复制组rest控制器来帮助执行角色维护操作。

14.7.2.2更改角色节点

有时您可能需要更改节点对特定复制组的角色。当您有一个预先存在的集群复制组配置(4.3之前的版本)并且现在希望能够开始使用新角色时,可能会发生这种情况。方法是从复制组中删除节点,然后在新角色中再次添加该节点。

从复制组中删除节点时,可以选择保留事件存储。如果要将节点的角色从主节点更改为备份节点,或将节点的角色从主节点更改为备份节点,则建议保留事件存储区,因为这样做会在再次使用新角色添加节点时阻止事件存储区的完全复制。

有三种可能的方法可以更改复制组中节点的角色:

A) Axon服务器EE UI控制台。导航到控制台导航菜单上的复制组图标,该图标将打开复制组维护屏幕。您可以选择从上下文中删除特定节点(使用delete图标)。如果要保留事件存储,请单击弹出窗口中的复选框。

B) 从复制组中删除节点命令

$ java -jar ./axonserver-cli.jar delete-node-from-replication-group -S http://[node]:[port] -g [replication-group-name] -n [node name]

强制性参数

-g是指现有的复制组

-n是指应该是此复制组成员的节点名

可选参数

-S如果未提供,则默认连接到http://localhost:8024。如果提供,它应该是服务于_admin上下文的任何节点

-t表示要在服务器上进行身份验证的访问令牌

--preserve-event-store 从复制组中删除节点,但将事件存储文件保留在该节点上。

C) Axon服务器EE提供了restapi(http:[server]:[port]/swagger-ui.html)它提供了复制组rest控制器来帮助执行角色维护操作

14.8 备份

AxonServer保持数据可用的核心策略是在不同的集群节点上复制数据。这些节点应该位于相关灾难场景中彼此隔离的可用区域中。在AxonServerEnterprise4.3中,引入特定的备份角色使设置和操作AxonServer变得更加容易,而无需对脱机媒体进行显式备份。然而,在某些环境中,这种备份是一个严格的要求,因此,AxonServer应该支持它

有三种类型的项目需要备份

  1. 控制数据库-Axon SE/EE
  2. 事件流片段-Axon SE/EE
  3. 日志条目段-仅限Axon EE

为了支持创建一致的备份,Axon服务器提供了rest api。此API提供三个控制器来执行备份操作

  1. 备份信息Rest控制器Backup Info Rest Controller-Axon SE/EE用于事件流段备份的端点
  2. 备份控制数据库Rest控制器Backup Control DB Rest Controller-Axon SE用于控制数据库备份的端点
  3. 集群备份信息rest控制器Cluster Backup Info Rest Controller-控制数据库和日志条目段备份的Axon EE的端点

API文档可从http:[server]:[port]/swagger-ui.html访问.

14.8.1控制数据库

控制数据库是一个关系型H2数据库,包含用于Axon服务器SE/EE部署的重要配置信息。虽然它存储在一个文件中,但不能简单地复制此文件以备备份,因为它可能不处于安全状态。

对于Axon Server SE,调用后端点http://[Server]/createControlDbBackup将强制创建正确的备份文件。

对于Axon服务器EE,调用后端点http://[Server]/v1/backup/createControlDBBackupUp强制创建一个正确的备份文件。[server]可以是群集中服务于_admin上下文的任何节点。

在这两种情况下,它都会返回该文件(.zip)的完整路径,然后可以使用该路径将该文件移动到另一个存储介质

14.8.2事件流段

事件流段要么是关闭的且不可变的,要么仍然为新事件打开。对于封闭段,只备份尚未备份的段是可行的,因为已备份的段保证不会更改。

对于两个Axon Server SE/EE,调用GET端点http://[Server]/v1/backup/filenames(事件或快照)、上下文名称和最后一个已备份的段(可选)将返回属于尚未备份的段的文件名列表,但是现在只需拷贝它们就可以安全地备份了

对于Axon SE,[server]是单个Axon server SE节点,而对于Axon EE,[server]可以是任何作为需要备份的上下文的主要成员节点的节点。

此外,您可以选择备份正在写入的当前段文件。这些文件的名称大于从备份终结点返回的文件名中的姓氏。使用后续备份覆盖此文件非常重要,因为无法保证此文件的完整性。这意味着在对备份端点的后续请求中,不应使用此文件的文件名构造“lastSegmentBackedUp”

14.8.3日志条目段(仅适用于Axon Server EE)

与事件流段不同,日志条目段备份不应以增量方式完成。所有文件将被下一次备份替换。GET端点http:[server]/v1/backup/log/filenames支持日志条目段备份。它接受上下文名称并返回一个文件名列表,这些文件名将完全替换该上下文的先前备份。‌[server]可以是作为需要备份的上下文的主要成员节点的任何节点。

即使最近的文件中有不完整的数据,节点也能从这样的文件中恢复一致的状态,并在最后一次完全写入后立即在该位置初始化自身。复制过程(如果存在)将确保后续条目自动同步

由于控件数据库包含指向已知安全存储在集群上的最后一个日志项(提交索引)的指针,因此执行此操作的正确顺序是首先创建控件数据库备份,然后备份日志条目段和事件流段。这将确保日志条目段的条目可能超出提交索引(这是正常的),但是在提交索引之前没有丢失的条目(这将是错误的)。备份controlDB后,必须在30分钟内备份日志条目段,以防止日志压缩过程导致数据不一致。

14.9 回退

注意:此功能仅在Axon Server Enterprise 4.3版以后的版本中提供。

在网络发生重大变化的情况下,当所有Axon服务器节点的主机名都已更改,或者要将Axon服务器群集移动到新环境中,则必须以回退模式启动Axon Server。这是需要的,因为Axon服务器在其控制数据库中维护集群中节点的信息,并且需要在所有节点上更新这些信息。

当Axon服务器发现在其启动目录中一个名为recovery.json,或在属性定义的位置有axoniq.axonserver.recoveryfile属性,这时服务器就会启动回退流程. 回退文件必须包含群集中节点的JSON数组及其主机名和端口号,例如:

[

{

"name": "axonserver-1",

"hostName": "axonserver-1",

"internalHostName": "axonserver-1.internal",

"grpcInternalPort": 8224,

"httpPort": 8024,

"grpcPort": 8124

},

{

"name": "axonserver-2",

"hostName": "axonserver-2",

"internalHostName": "axonserver-2.internal",

"grpcInternalPort": 8224,

"httpPort": 8024,

"grpcPort": 8124

},

{

"name": "axonserver-3",

"hostName": "axonserver-3",

"internalHostName": "axonserver-3.internal",

"grpcInternalPort": 8224,

"httpPort": 8024,

"grpcPort": 8124

}

]

hostName定义客户端将用于连接到Axon服务器节点的主机名。internalHostName包含一个Axon服务器用于连接到另一个服务器的名称。任何未更改的元素(名称除外)都可以省略,因此如果要使用相同的端口号,可以省略grpcInternalPort、httpPort和grpcPort元素。在上面的示例中,Axon服务器节点的节点名将与以前相同。由于Axon服务器从主机名派生节点名,因此在属性中未显式设置时,这可能会在更改主机名时导致问题。要更改Axon服务器节点的节点名,请在JSON文件中添加oldName元素。

[

{

"name": "new-axonserver-1",

"oldName": "axonserver-1",

"hostName": "new-axonserver-1",

"internalHostName":" new-axonserver-1.internal"

},

{

"name": "new-axonserver-2",

"oldName": "axonserver-2",

"hostName": "new-axonserver-2",

"internalHostName": "new-axonserver-2.internal"

},

{

"name": "new-axonserver-3",

"oldName": "axonserver-3",

"hostName": "new-axonserver-3",

"internalHostName": "new-axonserver-3.internal"

}

]

Axon 4.4 中文版文档(十四)相关推荐

  1. Axon 4.4 中文版文档(一)

    前言 本人属于业内萌新,应业务学习需求对Axon框架进行学习,全篇以机翻为基础,自己凭着浅薄的理解逐句对用语进行了整理,如专业用语有误或理解有问题,请大家多多指正. 本篇是Axon4.4框架的翻译文档 ...

  2. Android 系统 (130)---ODM 开发用户常见需求文档(四)

    ODM 开发用户常见需求文档(四) 一:取消用户模式 (frameworks/) diff --git a/base/packages/SystemUI/res/layout/keyguard_sta ...

  3. 《信息化项目文档模板四——系统建设方案模板》

    系列文章目录 <信息化项目文档模板一--项目需求说明书> <信息化项目文档模板二--项目启动会文档模板> <信息化项目文档模板三--会议纪要模板> <信息化项 ...

  4. 0、PIC系列参考手册中文版文档汇总

    PIC系列参考手册中文版文档汇总 1.PIC系列参考文档,中文版资料汇总 1.PIC系列参考文档,中文版资料汇总 第3章 存储器构成:PIC32系列参考手册 第3章 存储器构成 第4章 预取高速缓存: ...

  5. druid.io中文版文档

    最近我们公司另一个大牛已经在进行druid.io文档的翻译并增加了自己的一些注解,后续翻译还在进行中,如有错误多多反馈. 链接地址如下: 中文版文档 列表地址

  6. PPT转成Word文档的四种方法

    注: 实际使用中,方法四比较好使. 如果想要提取图片,可以先转换成pdf,再转换成word. 方法一:利用"大纲"视图       打开PPT演示文稿,单击"大纲&quo ...

  7. Javadoc转换chm帮助文档的四种方法总结

    使用jd2chm.exe方式无法完成,不晓得为什么. 所以用的javadoc2chm 方式,但是chm文档开头AllClass乱码, 用chmeditor修改就可以了 点击Files 下的工具类文档. ...

  8. 【大运维之四】运维标准化文档的四项基本原则

    http://www.csdn.net/article/2015-08-12/2825444 [大运维之四]运维标准化文档的四项基本原则 发表于 2015-08-12 11:03|  534次阅读| ...

  9. 服务器测评文档,十年磨一剑,腾讯自研TBase数据库有奖测评

    [TBase开源版测评]征文活动获奖名单公布:https://cloud.tencent.com/developer/article/1691427 TBase是 7月13日,TBase重磅发布了开源 ...

最新文章

  1. 你的AI模型有哪些安全问题,在这份AI攻防“词典”里都能查到
  2. new二维数组的几种方法
  3. 关于链表的面试题(持续更新)
  4. 如何在SQL Server中使用数据质量服务清除主数据服务数据
  5. linux 2.6线程创建源码分析
  6. [渝粤教育] 西南科技大学 机械设计基础 在线考试复习资料(1)
  7. linux怎么安装Nginx
  8. STM32F7xx基于HAL库的USB_CDC接收数据的函数调用
  9. 打印插件Lodop响应慢、卡顿问题分析与解决方案以及常见问题
  10. python使用turtle库绘制一个100长度的十字架_哪个选项能够使用turtle库绘制一个半圆形?...
  11. 眼疲劳症如何自我检测
  12. Forth 语言学习
  13. arcgis10之生成无背景色的png图片
  14. Wincc 编辑颜色对应c脚本返回的十进制数
  15. #从零开始学C语言# 又名 #一人手打情书#
  16. Docker buil提示https://registry-1.docker.io/v2/: read tcp 10.221->:443: read: connection reset by peer
  17. 大白话5分钟带你走进人工智能-第七节梯度下降之梯度概念和梯度迭代过程(2)
  18. java中jdk的下载与安装
  19. 我是这样克服拖延症的
  20. CentOS7/8安装jq教程

热门文章

  1. 二叉树系列(1)-实现排序二叉树
  2. vpp怎么写node
  3. 如何区分电容的正负极
  4. VMware 主IP地址:网络信息不可用
  5. (15)卡巴斯基防病毒软件介绍-概述
  6. 用CSS实现一个抽奖转盘(附详细代码+思路)
  7. 机械键盘之黑轴、青轴、茶轴、红轴、白轴的区别
  8. 液晶12864显示字符
  9. Excel一键知道文本的字符长度
  10. 尚医通-OAuth2-微信登录接口开发(三十一)