💡
原文中文,约10300字,阅读约需25分钟。
📝
内容提要
本文讨论了分布式数据系统中的关键概念和挑战,包括数据复制、复制滞后、多主节点复制/无主节点复制、数据分区、分区与二级索引、分区再平衡、请求路由、事务、分布式系统的挑战、一致性与共识。文章提到了主从复制、两阶段提交和Raft等常见技术方案和算法。
🎯
关键要点
- 分布式数据系统主要有三种模式:shared-memory、shared-disk、shared-nothing,重点在shared-nothing模式。
- 数据复制的目的是提高可用性,带来低延迟和高吞吐。
- 主从复制是经典的实现方式,但主节点异常处理复杂,需确认节点状态。
- 复制滞后问题可能导致读取不一致,需通过强制读主等方式解决。
- 多主节点复制和无主节点复制增加了系统复杂性,通常提供弱一致性。
- 数据分区解决单机存储和可用性瓶颈,分区方式包括基于范围和哈希值。
- 二级索引在分布式系统中支持复杂,需考虑索引更新和查询效率。
- 分区再平衡可通过固定数量分区或动态分区实现,避免热点问题。
- 请求路由需考虑分区变化,常用Zookeeper和gossip协议。
- 事务将多个操作捆绑为一个逻辑单元,提供ACID保证,但实现上存在差异。
- 弱隔离级别如脏读和不可重复读可能导致数据不一致,需谨慎处理。
- 串行化是最严格的隔离级别,吞吐量受限于单个CPU核。
- 分布式系统面临网络和时间不可靠的挑战,需考虑各种故障情况。
- 一致性与共识是分布式系统的核心,最终一致性是弱保证。
- 可线性化确保系统看似只有一个数据副本,需在一致性和可用性间做选择。
- 分布式事务可通过两阶段提交实现,确保所有节点一致提交或中止。
- 共识算法如Raft确保消息处理顺序一致,增强系统可靠性。
➡️