Vivid

集群部署

部署拓扑、加入与发现、Gossip、优雅退出流程与图示

本文用图示说明集群的部署形态、节点加入与发现、Gossip 同步、故障检测与优雅退出,便于理解部署拓扑与运行时行为。

部署拓扑

集群有两种典型部署形态:单数据中心(单 DC)与多数据中心(多 DC)。种子(Seeds)用于首次发现,之后通过 Gossip 持续收敛视图。

单数据中心:Seeds + Gossip
加载图表…
多数据中心:每 DC 种子 + 同 DC/跨 DC Gossip
加载图表…

要点:

  • Seeds:节点启动时仅知 Seeds(或 SeedsByDC);无种子或本节点在种子列表中时,该节点以种子身份自举(Bootstrap),不向他人发起 Join。
  • advertiseAddr:必须与 Seeds 中使用的地址一致,其他节点通过该地址连接本节点。
  • 多 DC:使用 WithClusterSeedsByDC 按 DC 配置种子,加入时优先连本 DC 种子;跨 DC 故障检测与 Gossip 可单独配置超时与间隔(见 多数据中心)。

节点加入与发现流程

节点启动后,NodeActor 在 OnLaunch 中决定是“自举为种子”还是“向种子发起 Join”。成功后合并视图并启动 Gossip 与故障检测。

加入流程:自举为种子 或 向种子 Join
加载图表…
加入决策:是否自举为种子
加载图表…
  • Join 请求发往种子的 /@cluster 路径(即 NodeActor 的远程路径)。
  • 种子侧可配置 JoinAllowAddresses / JoinAllowDCsJoinSecret(AuthToken)、协议版本范围;不满足则返回错误,新节点继续尝试其他种子或退避重试。

Gossip 与视图同步

成员视图通过周期性 Gossip 在节点间扩散;状态变更(如新成员加入、故障剔除)会立即广播一轮,不等到下一周期。

Gossip 一轮:发送视图快照、接收方合并
加载图表…
视图合并:版本向量 + Epoch/Timestamp 策略
加载图表…
  • 同 DC:由 DiscoveryInterval 驱动 GossipTick跨 DC 若配置了 CrossDCDiscoveryInterval > 0,另有一轮 GossipCrossDCTick,目标仅限跨 DC 节点。
  • 合并时使用 VersionVector 比较因果顺序,VersionConcurrent 时按 VersionConcurrentStrategy 决定是否采纳对方的 Epoch/Timestamp;MaxClockSkew > 0 时可拒绝过大时钟偏差,避免错误时钟主导。

故障检测与剔除

故障检测在 FailureDetectionTick 中周期执行:根据 LastSeen 与超时判断 Suspect / Down,从视图中剔除并发布事件。

故障检测:超时 → Suspect → 剔除 → 事件
加载图表…
  • FailureDetectionTimeout:同 DC 成员超时未刷新 LastSeen 则先 Suspect(若配置了 SuspectConfirmDuration),再剔除。
  • CrossDCFailureDetectionTimeout:对跨 DC 成员单独超时;未配置时默认采用同 DC 超时的 2 倍,减少跨 DC 延迟导致的误判。

优雅退出(Leave)

业务调用 Leave() 后,NodeActor 收到 LeaveRequest,经 LeaveCoordinator 多轮广播“本节点离开”,进入 Exiting 并回复 LeaveAck,发布 ClusterLeaveCompletedEvent 使 Leave() 返回。

优雅退出:多轮广播 → Exiting → LeaveAck → 事件
加载图表…
Leave 多轮广播与退出
加载图表…
  • LeaveBroadcastRounds > 1 时多轮广播,提高多 DC 场景下各 DC 收敛概率;LeaveBroadcastDelay 为每轮间隔,多 DC 建议 1–2s。

节点生命周期(状态流转)

从启动到退出的状态流转见 节点生命周期;此处用状态图概括。

节点生命周期状态
加载图表…

架构要点摘要

项目说明
NodeActor 名称与路径框架创建时使用名称 @cluster,节点间通信路径为 /@cluster
种子与自举无 Seeds 或本节点在 Seeds 中时,节点以种子身份自举;否则向 seed_host:port/@cluster 发起 Join。
Gossip 与视图拉取成员视图通过 Gossip 消息在节点间同步;GetViewRequest 用于按需拉取当前视图(如多数派恢复)。
多 DC 配置SeedsByDC、CrossDCFailureDetectionTimeout、CrossDCDiscoveryInterval、MaxDiscoveryTargetsPerTickCrossDC 等见 多数据中心配置选项

更多配置与行为说明见 配置选项与 Remoting 的关系多数据中心

On this page