分布式系统架构系列讲解 - 总目录
一、数据分片
可扩展性是指当系统的任务(work)增加时,通过增加资源来应对任务增长的能力。分布式系统出现的目的之一就是解决单个计算机无法完成的计算、存储任务。那么当任务规模增加的时候,首先要考虑的问题就是:
如何对任务进行拆分,将任务的子集分配到每一个节点,每个节点只负责原问题(即整个系统需要完成的任务)的一个子集?
比如,在分布式存储系统中,任务的拆分就是数据分片,每个节点存储完整数据的一部分。常见的数据分片算法包括:普通哈希(hash),一致性哈希(consistency hash),基于数据范围分片(range based)。
无论哪一种算法,都需要考虑以下问题:
- 如何划分原始数据集?
- 当原问题的规模变大时,能否通过增加节点来动态适应?
- 当某个节点故障的时候,能否将该节点上的任务/数据转移到其它节点?
每一种算法有各自的优缺点,也就有各自的适用场景。本文主要介绍一致性Hash,在这之前我们先来回顾下普通Hash。
二、普通Hash
学过数据结构的童鞋都