假设 kafka的分区可以绑定多个消费者。现在一个分区p1,数据分布如下,有两个消费者c1, c2。
例图如果c1 已经消费了1-10,那么该分区的消费index 需要移动到10的位置。当c2希望消费10-20时,index再继续进行移动。
此时
- 假设broker对index进行维护。但是consumer 是进行pull操作的,拉取操作一般来说都是由拉取方提供index,数据方根据index 返回数据。如果由数据方维护index,会增加获取index 的通信开销。
- 假设consumer端进行多人的index维护,那么就得引入中心的概念,大家都在中心去获得当前的index,这会增加复杂性。
- 在consumer端维护单人index,可以方便的pull数据。牺牲了分区的分布式消费。由于可以有多个分区,权衡之下是较为合理的方案。
网友评论