重试环连接器 (Ring-Coordinator Connector)
概述 (Overview)
重试环连接器 (Ring-Coordinator Connector) 是一个辅助模块,用于在重试环架构中将标准的编排器 (Orchestrator) 服务转变为*重试节点 (Retry Node)*。 它连接到已配置的主重试协调器 (Master Ring-Coordinator),查找可用的从重试协调器 (Slave Ring-Coordinator),并与该 Slave 建立连接并保持长连接活跃,以接收执行重试任务所需的环分区信息 (Ring-Partition Information)。 如需深入了解,请阅读 重试节点 (Retry-Node) 章节。
要将标准 Orchestrator 服务转变为重试节点,请在 Orchestrator 服务中添加 stacksaga-ring-coordinator-connector 依赖,并配置 Master Ring-Coordinator 的连接详情。
随后,Orchestrator 服务将自动连接到 Master Ring-Coordinator,并开始接收环分区信息以执行重试任务。
依赖管理 (Dependency Management)
<dependencyManagement>
<dependencies>
<dependency> <!--仅用于 stacksaga 依赖项版本管理-->
<groupId>org.stacksaga</groupId>
<artifactId>stacksaga-bom</artifactId>
<version>1.0.0-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.stacksaga</groupId>
<artifactId>stacksaga-ring-coordinator-connector</artifactId>
</dependency>
</dependencies>
| 推荐使用 StackSaga Initializer (初始化器) 获取项目所需的 StackSaga 依赖配置代码段,以确保您的项目拥有正确的版本和依赖组合。 |
添加依赖项后,请在应用程序配置文件(application.yml 或 application.properties)中配置 Master Ring-Coordinator 的连接详情。
配置属性 (Configuration Properties)
请在应用程序配置文件(application.yml 或 application.properties)中配置以下属性,以便 Connector 能够连通 Master Ring-Coordinator 并接收环分区信息。
默认值 (Default) 列中显示连字符 (-) 的属性为必填项且无默认值,必须显式指定。
|
| 属性名称 (Property Name) | 默认值 (Default) | 类型 (Type) | 描述 (Description) |
|---|---|---|---|
通用配置 (General) |
|||
|
|
|
是否启用 Ring-Coordinator Connector 模块。设置为 |
Master 连接配置 — 首次查找可用 Slave |
|||
|
- |
|
Connector 连接的主重试协调器 (Master Ring-Coordinator) 主机地址,用于查找可用的从重试协调器 (Slave Ring-Coordinator)。 |
|
- |
|
Connector 连接的 Master Ring-Coordinator 端口号。 |
|
|
|
客户端在宣告失败前尝试与 Master 建立 TCP 连接的超时等待时间。 |
|
|
|
连接断开后,在与 Master 的*当前*连接上进行重新连接尝试的最大次数。一旦达到此限制,Connector 将丢弃该连接,并根据配置的主机和端口重新建立全新连接——它不会停止运行。新建连接会重新解析主机名,因此即使集群中只有一个 Master,如果 Master 重启或被重新调度到新 IP,Connector 也能获取最新 IP 地址(绕过 JVM DNS 缓存问题),而不会无休止地重试陈旧失效的地址。 |
|
|
|
连接断开后首次重试前的初始退避时间 (Initial Backoff)。较短的延迟有助于瞬态问题自动恢复,而不会造成过长的停机时间。 |
|
|
|
重连退避时间的上限值。两次尝试之间递增的退避时间绝不会超过该值。 |
Master 连接配置 — 注册表中暂无可用 Slave 时的重试策略 |
|||
|
|
|
当与 Master 成功建立连接但 Master 缓存中当前没有可用 Slave 提供服务时的最大重试次数。此时与 Master 的连接保持正常,无需重新建连,Connector 仅在每次尝试时向 Master 重新请求 Slave 详情,直到有可用 Slave 为止,随后再连接到该 Slave(受下方的 |
|
|
|
暂无可用 Slave 时首次重试前的初始退避时间。 |
|
|
|
无可用 Slave 重试退避时间的上限值。 |
Slave 连接配置 — 查找到可用 Slave 后的连接参数 |
|||
|
|
|
客户端在宣告失败前尝试与查找到的 Slave 建立 TCP 连接的超时等待时间。 |
|
|
|
连接断开后,在与*当前* Slave 的连接上进行重新连接尝试的最大次数。一旦达到此限制,Connector 将停止重试该 Slave,并返回 Master 查找*另一个* Slave——因为 Master 本身是健康的,仅当前 Slave 连接失效。如果该 Slave 已宕机或处于不健康状态,它极大概率已经被从 Master 的注册表中剔除(Master 会随着 Slave 连接的变化实时维护该注册表),因此重新查找将返回一个全新的健康 Slave。 |
|
|
|
与 Slave 断开后首次重连尝试前的初始退避时间。 |
|
|
|
与 Slave 重连退避时间的上限值。 |