
配置的定义与重要性 集群配置是节点地址信息的集合,如[A, B, C]表示由三个节点组成的集群。配置变更是分布式系统动态调整的核心操作,需保证变更过程中集群的稳定性和一致性。
成员变更的风险 直接变更多个节点可能导致新旧配置的"大多数"重叠不足,引发双领导者问题。例如:
分阶段扩容示例 将3节点[A, B, C]扩容至5节点[A, B, C, D, E]需分两步:
数学保证 对于配置变更,设旧配置大小为
,新配置为
,则:
节点
节点 两者必有至少一个重叠节点(如原"大多数"中的领导者)。
并发变更防护 通过NO_OP日志屏障确保变更串行化:
noop := &logFuture{
log: Log{
Type: LogNoop,
},
}
r.dispatchLogs([]*logFuture{noop})该机制可防止未完成的变更与新变更指令并发执行。
性能优化方向
一致性级别选择 根据场景选择合适的一致性模型:
stale模式允许从任意节点读取实施要点