分布式
理解多节点系统中的一致性、复制、协调、故障恢复与数据正确性。
文章
16 篇分布式系统入门:从故障模型到一致性、共识与事务
从一笔余额扣减出发,理解网络分区、复制、一致性模型、CAP、Raft、2PC、Saga、幂等与分布式系统验证。
分布式、集群与微服务:三个词分别在说什么
用同一套订单系统说明集群、分布式与微服务关注的层次,解释它们怎样组合,以及服务拆分后新增的失败边界。
CAP、PACELC 与 BASE:别把取舍模型当成系统标签
从一次跨机房库存写入出发,区分 CAP 的分区语义、PACELC 的日常延迟取舍,以及 BASE 在业务设计中的实际责任。
一致性模型:从最终一致到线性一致
用一条订单状态链路区分最终一致、会话保证、因果一致、线性一致与事务隔离,并把抽象承诺翻译成接口语义。
超时、重试、幂等与 Exactly-once:结果未知时,系统还能相信什么
从一次创建订单超时出发,解释超时为何不等于失败,怎样设计可重试接口,以及 Exactly-once 在端到端语境中的边界。
RPC:一次远程调用可能处于哪些状态
从客户端超时看清一次 RPC 的发送、执行与响应状态,避免把网络错误误当成业务失败。
分布式锁:Redis、ZooKeeper 与 Fencing Token 到底解决什么问题
从多实例定时任务重复执行出发,讲清 Redis 锁的加锁、解锁、续期与故障窗口,以及 ZooKeeper、etcd 和 Fencing Token 怎样阻止过期持有者。
多台机器怎样生成不重复的 ID:UUID、Snowflake 与 Leaf
从短链接创建请求出发,区分主键、业务 ID 与全局 ID,拆解 UUID、Snowflake、号段模式和美团 Leaf 的生成机制、故障边界与选型方法。
数据超过单机后怎么拆:分片键、路由、扩容迁移与一致性哈希
从短链接读写路径与支付流水实战出发,讲清分片键怎么选、全局 ID 为什么不能自动路由、取模与基因法怎样工作,以及扩容时如何迁移数据并验证正确性。
数据库增加副本后,为什么仍会读到旧数据:主从复制、读写分离与 Quorum
从短链接创建后立即访问却返回 404 的问题出发,讲清复制日志、复制延迟、读己之写、半同步复制、主从切换,以及 Quorum 读写集合的保证与边界。
分布式事务:2PC、TCC、Saga、Outbox 与事务消息怎样选
从一条支付、业务确认与退款链路出发,区分原子提交、资源预留、补偿事务和可靠消息,讲清 2PC、TCC、Saga、Outbox 与事务消息的适用边界。
服务地址总在变化,调用方怎样找到它:服务发现、健康检查与故障摘除
从支付服务调用钱包服务的完整路径出发,讲清注册中心、DNS、客户端发现、健康检查、故障摘除、本地缓存与 Kubernetes Service 的职责和失败边界。
多台机器怎样确保定时任务只执行一次:任务调度、租约与幂等
从一次续签补偿扫描出发,拆开定时触发、任务抢占、租约续期、超时接管、Fencing Token 与业务幂等,说明多实例调度怎样避免漏跑和重复副作用。
用一个最小 Raft 实现理解选主、日志复制与成员变更
从三节点 KV 状态机出发,逐步实现 Raft 的任期、投票、AppendEntries、提交规则、崩溃恢复、快照与 Joint Consensus,并解释每条安全约束挡住了什么故障。
一个机房整体故障后怎样恢复:多机房、RPO 与 RTO
从业务损失出发定义 RPO、RTO 与恢复边界,比较备份恢复、冷备、温备、热备和双活,并完整走过数据复制、流量切换、旧主隔离、依赖恢复与回切演练。
怎样证明系统在故障中仍然正确:故障注入与 Jepsen
从一致性承诺、不变量和操作历史出发,讲清 Jepsen 的 Client、Generator、Nemesis 与 Checker,使用 Knossos 和 Elle 检查线性一致性与事务异常,并设计能命中协议窗口的故障实验。