NOTE

5.4 分布式系统分区之分区分配

把 partition/node 尽量平均分配到各个 machine 上 1. 分配方式 1.1. 静态分配 创建远超machine数目的node, 优点:迁移node到其他machine时,集群可以对外响应 缺点:machine最大数目是固定的 1.2. 动态分配 各个node相互协调,各自负责一

分布式系统创建于 更新于 historical

这是历史学习笔记,可能存在过时或不完整的理解。

partition/node尽量平均分配到各个machine

1. 分配方式

1.1. 静态分配

创建远超machine数目的node, 优点:迁移node到其他machine时,集群可以对外响应 缺点:machine最大数目是固定的

1.2. 动态分配

各个node相互协调,各自负责一部分partition 优点:可以动态增减node 缺点:分区再平衡过程中,集群无法对外响应

1.3. 举例

  • MySQL是由程序员手动指定,静态分配
  • Redis是每个node负责一定范围的slot,动态分配
  • Kafka是把partition平均分配到broker上,动态分配
  • Zookeeper没有分区
  • Elasticsearch是动态分配

2. 分配策略

类似于分布式系统分区之数据拆分.md中的数据拆分策略

2.1. 按顺序

2.2. 按比例

使node/partition数目和machine数目成正比关系

3. 分区再平衡

当machine数量增减,partition/node可能不是均匀分布在所有machine,需要重新分配partition/node以使负载均衡

3.1. 手动

增减machine人工手动维护parition/node的平衡 优点:出现问题时能及时处理 缺点:麻烦

3.2. 自动

增减machine时集群自动维护parition/node的平衡 优点:方便 缺点:优点:出现问题时无法及时处理

3.3. 举例

  • MySQL是手动
  • Redis是自动
  • Kafka是手动的
  • Zookeeper没有分区
  • Elasticsearch是自动