Vivid

集群概览

Vivid 集群架构、NodeActor、成员发现与 ClusterContext

集群功能在启用 远程通讯 的前提下,通过 ActorSystemRemotingOptions.ClusterOptions 开启。启用后,系统会创建 NodeActor(名称为 @cluster,远程访问路径为 /@cluster),维护成员视图、故障检测与选主,并通过 ClusterContext 暴露给业务:获取成员、多数派状态及成员变更事件等。

架构概览

集群与业务、Remoting 关系
加载图表…
  • NodeActor:集群核心 Actor,由框架在初始化时创建,名称为 @cluster,节点间通信使用路径 /@cluster。负责 Gossip 协议、成员发现、故障检测、选主与视图合并。
  • ClusterView:每个节点持有本地成员视图,通过 Gossip 与种子发现周期性同步,版本向量(VersionVector)用于合并时的因果顺序与脑裂防护。
  • ClusterContext:供业务在 Actor 内通过 ctx.Cluster() 访问,提供 GetMembers、InQuorum、Leave 等 API。
  • 依赖关系:集群依赖 Remoting 的地址与编解码进行节点间通信;advertiseAddr 需与种子/成员使用的地址一致。

nil 检查

未设置 ClusterOptions 时,ctx.Cluster()system.Cluster()nil,使用前应做 nil 判断。若在未启用集群时调用 ClusterContext 的方法,会得到 ErrorClusterDisabled

核心能力

能力说明
成员发现通过 Seeds、SeedsByDC 与周期性 Gossip 收敛成员视图
故障检测超时未刷新的成员从视图剔除;支持 Suspect 确认以减少跨 DC 误判
多数派(Quorum)支持全局多数、多数 DC、每 DC 至少一票等策略
优雅退出Leave() 广播离开视图,多轮广播支持多 DC 收敛
加入控制JoinSecret 认证、JoinAllowDCs/JoinAllowAddresses 白名单、协议版本校验

文档导航

入门与配置

运行时与事件

  • ClusterContext — 运行时 API:GetMembers、InQuorum、Leave、SingletonRef
  • 集群单例 — 集群内唯一 Actor、WithClusterSingleton、SingletonRef(本地代理)
  • 集群事件 — 成员变更、Leader、Quorum、View、DC 健康、Leave 完成
  • 节点生命周期 — Starting → Joining → Active → Leaving → Exiting

拓扑与法定人数

安全与排错

与 Remoting

On this page