--- title: "加入集群重试延迟配置" date: 2026-01-08 lastmod: 2026-01-08 description: "discovery.zen.join_retry_delay 配置项用于控制节点加入集群失败后重试前的等待时间(已弃用)。" tags: ["集群发现", "节点加入", "重试延迟", "已弃用"] summary: "配置项作用 # discovery.zen.join_retry_delay 配置项用于控制节点加入集群失败后,下一次重试前的等待时间。 当节点尝试加入集群但遇到可重试的错误(如 NotMasterException)时,系统会等待此配置指定的时间后才进行下一次重试。 配置项属性 # 配置路径: discovery.zen.join_retry_delay 数据类型: TimeValue(时间值) 默认值: 100ms(100毫秒) 最小值: > 0(正数) 是否可选: 是 弃用状态: ⚠️ 已弃用 配置项详解 # 工作机制 # 加入集群重试流程 新节点 │ ↓ 发送加入请求 │ └──────── NotMasterException (可重试错误) ↓ 等待 join_retry_delay │ ↓ 100ms 后重试 │ ↓ 再次发送加入请求 │ ┌──────┴──────┐ │ │ 成功 仍然失败 │ │ ↓ ↓ 加入集群 ✅ 再次等待延迟 │ ↓ 继续重试... 重试延迟的作用 # 无延迟场景: 失败 → 立即重试 → 失败 → 立即重试 → ." --- ## 配置项作用 `discovery.zen.join_retry_delay` 配置项用于控制节点加入集群失败后,**下一次重试前的等待时间**。 当节点尝试加入集群但遇到可重试的错误(如 `NotMasterException`)时,系统会等待此配置指定的时间后才进行下一次重试。 ## 配置项属性 - **配置路径**: `discovery.zen.join_retry_delay` - **数据类型**: `TimeValue`(时间值) - **默认值**: `100ms`(100毫秒) - **最小值**: `> 0`(正数) - **是否可选**: 是 - **弃用状态**: ⚠️ **已弃用** ## 配置项详解 ## 工作机制 ``` 加入集群重试流程 新节点 │ ↓ 发送加入请求 │ └──────── NotMasterException (可重试错误) ↓ 等待 join_retry_delay │ ↓ 100ms 后重试 │ ↓ 再次发送加入请求 │ ┌──────┴──────┐ │ │ 成功 仍然失败 │ │ ↓ ↓ 加入集群 ✅ 再次等待延迟 │ ↓ 继续重试... ``` ## 重试延迟的作用 ``` 无延迟场景: 失败 → 立即重试 → 失败 → 立即重试 → ... ↓ 可能造成: - 对主节点的压力 - 网络拥塞 - 资源浪费 有延迟场景: 失败 → 等待 100ms → 重试 → 失败 → 等待 100ms → 重试 → ... ↓ 好处: - 给主节点恢复时间 - 减少网络压力 - 避免资源浪费 ``` ## 配置建议 ## ⚠️ 重要提示 此配置项**已被标记为弃用**,建议保持默认值。 ## 生产环境(默认) ```yaml discovery.zen.join_retry_delay: 100ms ``` **建议**: 保持默认值 `100ms`。这是快速恢复和资源消耗之间的平衡。 ## 高负载环境 ```yaml discovery.zen.join_retry_delay: 500ms ``` **建议**: 增加到 `500ms-1s`。当主节点负载高时,给其更多恢复时间。 ## 稳定网络环境 ```yaml discovery.zen.join_retry_delay: 50ms ``` **建议**: 减少到 `50ms`。网络稳定时可以加快重试速度。 ## 代码示例 ## easysearch.yml 配置(已弃用) ```yaml discovery: zen: join_retry_delay: 100ms # 默认值 ``` ## 配合重试次数配置 ```yaml discovery: zen: join_retry_attempts: 3 join_retry_delay: 100ms ``` ## 高负载环境配置 ```yaml discovery: zen: join_retry_attempts: 5 join_retry_delay: 500ms # 增加延迟 ``` ## 相关配置 | 配置项 | 作用 | 默认值 | |--------|------|--------| | `discovery.zen.join_retry_delay` | 重试之间的延迟 | 100ms | | `discovery.zen.join_retry_attempts` | 重试次数 | 3 | | `discovery.zen.join_timeout` | 加入超时时间 | ping_timeout × 20 | | `discovery.zen.ping_timeout` | ping 超时 | 3s | ## 加入总时间计算 ``` 加入总时间 ≈ (请求时间 + join_retry_delay) × join_retry_attempts 默认配置: 假设单次请求耗时 500ms = (500ms + 100ms) × 3 = 1.8 秒 高负载配置: 假设单次请求耗时 2s = (2000ms + 500ms) × 5 = 12.5 秒 ``` ## 延迟设置指南 | 环境类型 | 推荐延迟 | 说明 | |----------|----------|------| | 标准生产 | 100ms | 默认值,平衡速度和压力 | | 高负载 | 300-500ms | 给主节点更多恢复时间 | | 低延迟网络 | 50-100ms | 加快重试速度 | | 不稳定网络 | 200-500ms | 容忍网络波动 | ## 性能影响分析 | join_retry_delay 设置 | 优点 | 缺点 | |----------------------|------|------| | 较短(50ms) | 快速重试 | 可能增加主节点压力 | | 中等(100ms) | 平衡恢复和压力 | 标准设置 | | 较长(500ms) | 减少压力 | 恢复较慢 | ## 使用场景 ## 推荐保持默认的场景 - **标准生产环境**: 主节点负载正常 - **快速恢复**: 需要快速完成节点加入 - **稳定网络**: 网络延迟低且稳定 ## 推荐增加的场景 - **高负载集群**: 主节点处理能力有限 - **大量节点加入**: 多个节点同时加入集群 - **资源受限**: 需要控制重试频率 ## 推荐减少的场景 - **紧急恢复**: 需要尽快完成节点加入 - **低延迟网络**: 网络条件极佳 - **小型集群**: 节点数量少,压力小 ## 注意事项 1. **已弃用**: 此配置已被标记为弃用,建议关注新的发现机制。 2. **只对可重试错误生效**: 只有 `NotMasterException` 等可重试错误才会触发延迟重试。 3. **与重试次数配合**: 总重试时间 = (请求时间 + delay) × attempts。 4. **Thread.sleep 实现**: 代码中使用 `Thread.sleep()` 实现延迟,会阻塞线程。 5. **调试日志**: 重试时使用 TRACE 级别日志记录。 6. **动态更新**: 此配置不支持动态更新。 7. **版本兼容**: Zen 发现机制已被弃用,新版本可能使用不同的机制。 8. **配置验证**: 确保延迟值不会过长,影响节点加入速度。