kafka概念疑问

a'ゞ 沙漏中的时光 发表于: 2019-05-02   最后更新时间: 2019-05-02 18:53:54   1,693 游览

大佬,如果可以的话,可以帮我解答下我的疑问吗?多谢~

一、分区问题

  1. 如果一个topic分为3个分区,生成者发送消息的时候,是不是选择一个分区并发送?意思是 三个分区的消息是不同,而不是一个消息发送到三个分区?

  2. 如果一个topic分为3个分区,一个消费者组有两个消费者,一个消费者对应一个分区。那么剩余的一个分区的消息 是不是没消费者消费?还是消费者组的两个消费者中的一个去消费?如果是这样,那么一个消费者岂不是对应两个分区了?

  3. 如果一个topic分为3个分区,一个消费者组有两个消费者,一个消费者对应一个分区。那么消费者维护的offset 。是不是 其对应分区的offset.而不是对topic的offset?

  4. 一个消费者对应一个分区,是不是可以这样理解: (1).一个消费者只能固定消费一个分区的数据,并且不可改变消费的分区? 如果是这样理解。那么一个topic有三个分区,一个消费者组有两个消费者,那么岂不是另外的一个分区的消息 没消费者消费? (2).还有另外一种理解:一个topic有三个分区(A,B,C三个分区),一个消费者组有两个消费者(X,Y消费者)。 那么一个消费者组的两个消费者消费三个分区的消息。那么同一个分区的消息只能随机被同一个的消费者组 的一个消费者消费。但是如果这样理解。那么消费者维护的offset是什么呢? 或者说一个消费者组维护三个分区的offset,如果X消费者消费了A分区的消息,A分区对应的offset+1. 如果Y消费者消费者了A分区的消息,A分区的offset 也 +1 ?

二、消费者(队列和发布-订阅式)

  1. 生产者发送一个消息到broker,假设这个消息对应的topic有三个分区。这个消息存到三个分区的某一个。 那么消息被广播给所有订阅该topic的消费者/消费者组。消费者/消费者组收到该消息后然后通过pull方式 从服务器拉取消息并消费?
发表于 2019-05-02

请采纳、哈哈

那我把答案也在贴一遍。。

一、
1、均匀的发到这3个分区中。
2、2个消费者中的一个去消费剩余的分区。
3、是的
4、
1)重启或故障则会被组中的其他成员消费,消费者数 <= 分区数,消费者多的话就会有消费者空闲着,少的话一个消费者会多消费几个分区。
2)消费者组中的成员(X,Y),比如X分到了(A,B),Y分到了(C),那么X就维护A和B的offset,Y则维护C的offset。topic的分区在同一时刻只属于一个消费者。

二、
嗯,kafka的消费者是主动拉取消息的。

你的答案

查看kafka相关的其他问题或提一个您自己的问题