Kafka REPLICA_ASSIGNMENT_STRATEGY有何区别?

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分配策略,具有不同的特点。需要根据实际情况进行选择。