Kafka支持以下几种REPLICA_ASSIGNMENT_STRATEGY:
1. Range(默认策略)
根据Broker序列表示的范围,将replicas分配给一段连续的broker。
举例
## www.itzhimei.com 代码演示
brokerids: 0,1,2,3
replicas: 2
partitions: 4
Assignment:
p0: 0,1
p1: 1,2
p2: 2,3
p3: 0,3
2. RoundRobin
按照轮询的方式,将replicas分配给所有可用的broker。
举例
## www.itzhimei.com 代码演示
brokerids: 0,1,2,3
replicas: 2
partitions: 4
Assignment:
p0: 0,1
p1: 1,2
p2: 2,3
p3: 0,3
3. Sticky
尽量分配给已经持有此partition的副本broker。
举例
## www.itzhimei.com 代码演示
brokerids: 0,1,2,3
replicas: 2
partitions: 4
Assignment(based on existing):
p0: 0,1
p1: 1,1
p2: 2,2
p3: 3,0
4. Random
随机地将replicas分配给broker。
这些策略的区别在于:
- Range : 分配给连续的broker,易于管理
- RoundRobin:平均分配,负载均衡
- Sticky:尽量使用现存的分配,可降低reassign开销
- Random:完全随机,没有偏好
它们提供了不同的分配策略,可以结合实际情况进行选择。
Kafka支持Range、RoundRobin、Sticky和Random几种replica分配策略,具有不同的特点。需要根据实际情况进行选择。