SuperAPI AI 工具集

consistency-coordination

部署与运维

查看项目

更新于 10-16 12:54

技能介绍

一致性协调(Consistency & Coordination)是一套面向系统设计的一致性技能,关注数据存放在多个节点时,读操作能获得什么保证,以及独立节点如何就单一答案达成一致。技能指出:处理不当会导致系统静默返回陈旧或冲突数据,或在网络链路断开时立刻停摆,属于最常见也代价最高的分布式系统故障。

【何时使用】当状态被复制、分片或在节点间协调时使用,包括:选择复制或法定人数方案、确定一致性级别、选举主节点、在弹性集群中分布键(一致哈希)、提交跨服务的变更。当有人问“写之后马上读会看到什么”或“分区期间会发生什么”时,即应查阅本技能。

【何时不使用】单节点且无副本的系统无需协调,不应引入法定人数或共识(YAGNI)。多数应用可容忍秒级陈旧;当最终一致已足够时,强一致或分布式事务只会带来延迟与运维痛苦,却没有需求要求的保证。满足不变量所需的最廉价模型即为最优解;在没有正确性要求驱动前就提 Raft 或 2PC 是危险信号。

【先澄清的问题】读取陈旧会破坏什么(余额错误与稍旧的点赞数属于不同系统);用户是否必须立刻看到自己的写入(read-your-writes 远廉价于全局强一致);分区或区域丢失的影响范围(决定 CAP/PACELC 选择);写竞争与冲突形态(每个键单写者,还是需要冲突解决的并发写者);延迟预算(同步协调增加一次往返甚至跨区域往返,需确认预算允许)。

【可选方案】一致性模型:强/线性一致(每次读都看到最新已提交写入,用于余额、库存、唯一性等全局不变量);read-your-writes/单调(会话能看到自己的写入且不回退,用于资料编辑);因果一致(读尊重因果顺序,用于评论、聊天、协同编辑);最终一致(副本“很快”收敛,读可能滞后,用于点赞数、信息流、缓存)。副本一致方式:单主(一个节点排序所有写,跟随者复制,常见默认);法定人数(R+W>N,读写多数,可调一致性);共识(Raft/Paxos,多数就复制日志达成一致,用于控制平面如选主、配置、元数据、锁)。多键/多服务变更协调:Saga(一系列本地事务加补偿撤销,用于无法全局加锁的跨服务场景,接受最终一致);2PC/分布式事务(通过协调者实现跨节点原子性,仅在原子性强制要求且接受代价时使用)。一致哈希:将键与节点映射到哈希环,键属于顺时针下一个节点;增删节点只重映射约 K/N 个键,而非取模方式几乎全部重映射,避免重映射风暴;虚拟节点可均衡负载、缓解热点。

【权衡】强一致解决正确性但恶化延迟、分区下不可用(CP);read-your-writes 避免全局成本但其他用户仍见陈旧、需会话/粘性路由;最终一致可用性与延迟最优但需冲突解决;单主排序简单但主节点是写单点、故障切换有间隙;法定人数可按调用调优但读写成本更高;共识能抗节点丢失但需多数、写延迟高且复杂;Saga 无需全局锁但无隔离、需设计补偿;2PC 原子提交但协调者是单点、投票期间持锁。

【压力下的行为】网络分区是强制选择点:CP/强一致系统在少数侧拒绝写入以保护不变量;AP/最终一致系统各处接受写入、稍后对账;必须明确选择了哪一种及原因,不存在两者兼得的第三选项。主节点丢失触发选举,间隙期内写入暂停或冒险继续(陈旧主继续写会导致脑裂与历史分叉);隔离令牌与多数法定人数可防止双主。低于多数时严格法定人数存储按设计停止接受写入。协调会放大故障:2PC 协调者崩溃会让参与者持锁阻塞,共识集群失去法定人数会冻结控制平面。监控项包括复制延迟、选主频率与时长、法定人数健康度、冲突/修复率,以及一致哈希的每节点键分布与再平衡量。

【如何应用】澄清不变量;从权衡表中选择模型与一致方案(匹配数据能容忍的最弱不变量);设置旋钮(按操作而非按数据存储设定一致性级别,设定 N、R、W 使 R+W>N,选择冲突策略如 LWW/向量时钟/应用解析器,弹性集群使用一致哈希);对选择做压力测试(明确 CAP 立场、脑裂隔离、协调是否会放大故障);用数字评估规模(协调往返成本对比延迟预算);若用户指定云厂商,读取对应 provider 文件了解托管一致性旋钮与法定人数存储限制。

【注意事项】应做到:把保证固定在操作级别(多数读最终一致,仅承载不变量的读强一致);明确说出 CAP 立场;为重叠与故障目标设定 R、W、N,并用多数法定人数加隔离令牌隔离主节点;返回版本号或向量时钟以便检测和解决冲突。不应做:在不变量强制要求前就引入强一致、共识或 2PC;在紧张的写预算下跨区域运行同步强一致或 2PC;在选举间隙让陈旧主继续写入;用 hash(key) % N 分片键。

【关键数字】协调成本主要由往返而非 CPU 决定:同数据中心往返为亚毫秒级,跨区域为数十至 100+ 毫秒,因此跨区域同步强一致或 2PC 可能给每次写增加 100 毫秒以上。法定人数规模为 ⌊N/2⌋+1;N=3 时需两节点同意,可承受一次故障。一致哈希在成员变更时只重映射约 K/N 个键(取模方式几乎全部重映射)。

【接口示意】一致性级别:STRONG | READ_YOUR_WRITES | CAUSAL | EVENTUAL;法定人数:N(副本)、W(写确认)、R(读确认),R+W>N 即重叠;写 API 返回版本或向量时钟;读 API 可返回 stale 标志;冲突策略为 last-write-wins、version-vector-merge 或 app-resolver。级别应固定在操作而非数据存储上。

【相关构建块】与 data-storage(复制、分片机制)、messaging-streaming(消息排序与精确一次投递)、resilience-failure(故障切换与降级)、caching(依赖一致哈希分片分布式缓存)、back-of-the-envelope(延迟表与可用性九数计算)、service-decomposition(跨服务一致性、服务发现协调)、system-design(编排器)等技能配合使用。

【参考资料】references/deep-dive.md 涵盖 CAP 与 PACELC、一致性模型机制、法定人数数学、Raft/Paxos 概览、选主与脑裂隔离、一致哈希环与虚拟节点、2PC 与 Saga 内部机制;references/providers/{generic,aws,gcp}.md 涵盖协调服务(ZooKeeper/etcd/Consul)、法定人数存储与各环境托管一致性旋钮(如 Spanner 外部一致性、DynamoDB 一致读标志)。