《深入理解分布式系统》精要 (更新中) 📅 2026/6/30 23:48:34 本文实为《深入理解分布式系统》一书的读书笔记意在帮助博主整理知识点用同时也希望能够对其他读者有所帮助。分布式系统的主要挑战网络延迟问题无法保证数据能够到达消息丢失无法保证数据什么时候到达以为消息丢了重复消息服务误下线消息乱序部分失效问题一部分节点正常工作一部分节点停止工作时钟问题无法获取统一的时间两个思想实验两将军问题将军的信使有可能被俘虏导致两个将军无法达成共识在一个分布式系统中多个节点无法同时确认彼此的状态拜占庭将军问题多个将军中可能出现叛徒破坏整个军事行动系统中某些成员节点不仅会发生故障和出现错误甚至会故意篡改系统模型抽象系统中的节点和网络可能出现的各种故障网络链路模型可靠链路也称完美链路消息不会丢失不会捏造但可能重排可靠传递没有重复每条消息最多只传递一次不会无中生有公平损失链路消息可能会丢失、重复或重排但最终总会到达公平损失只要不断重发最终总会到达有限重复消息只会重复发送有限次不会无中生有任意链路允许网络链接的任意操作如恶意篡改等三种模式的转换任意链路 - 加密技术 - 公平损失链路公平损失链路 - 重传过滤 - 可靠链路节点故障类型崩溃-停止节点停止后永远不会恢复崩溃-恢复允许节点重新启动并执行剩余的操作拜占庭故障不止会宕机还可能以任意方式破坏系统按时间划分系统模型同步系统模型一个消息的响应时间在一个有限且已知的时间范围内异步系统模型无法知道一条消息什么时候会到达有可能时间是无限的部分同步系统系统在大部分时间是同步的但偶尔因为故障转变为异步系统消息传递语义最多一次消息可能丢失但不会重复至少一次消息不会丢失但可能重复精确一次消息既不会丢失也不会重复数据分区垂直分区对表的列进行拆分水平分区对表的行进行拆分水平分区算法范围分区将关键字分为若干连续范围每个范围存储到一个单独节点优点简单可进行范围查询查询范围位于同一节点时性能良好易于平衡负载缺点无法使用其它关键字进行范围查询查询范围位于多个节点时性能较差可能有数据分布不均的问题哈希分区通过关键字的哈希值决定分区的位置优点数据分布相对均匀缺点无法进行范围查询增加或删除节点时引起大量数据移动一致性哈希将关键字通过哈希函数映射到哈希环上。通过引入虚拟节点分散物理节点的压力。优点很好地解决了添加或删除节点时大量映射失效的问题缺点无法进行范围查询