NOTE
5.4 分布式系统分区之分区分配
把 partition/node 尽量平均分配到各个 machine 上 1. 分配方式 1.1. 静态分配 创建远超machine数目的node, 优点:迁移node到其他machine时,集群可以对外响应 缺点:machine最大数目是固定的 1.2. 动态分配 各个node相互协调,各自负责一
这是历史学习笔记,可能存在过时或不完整的理解。
把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是自动