关于kafka:Kakfa-消费者启动流程

47次阅读

共计 761 个字符,预计需要花费 2 分钟才能阅读完成。

消费者启动的时候,次要是初始化几个外围的组件。

反序列器,次要是生产者发送的音讯是序列化到 broker 的,所以这边要反序列化进行解决。

NetworkClient 之前在生产者曾经讲过了,用于网络通讯。

ConsumerCoordinator 是协调器,如果同一个 group 进行生产的时候,须要进行协调,这里和 rocketmq 不同,rocketmq 是消费者本人来协调的(RocketMQ — 写在音讯拉取前),kafka 是通过 broker 来协调。雷同的是,消费者须要发送心跳给 broker,broker 才晓得哪些音讯费须要生产。

Fetcher 次要是用来拉取音讯的。

Consumer 在初始化后,就开始拉取音讯,然而在拉取音讯之前,还须要确定 Coordinator。

在没有 Coordinator 的时候,不如 consumer1,他会随机的找到 broker 的地址,比方 broker1。

调用 broker1 的接口,申请相干数据。

broker1 接管到申请后,就会对 groupid 进行 hash,并依据__consumer_offsets 的 topic 数据进行取模,__consumer_offsets 数量为 50。

假如 hash 的值是 10,而__consumer_offsets 的 partition 为 10 在 broker2 上,那这个 broker2 就是 Coordinator 服务器。

consumer1 晓得 broker2 是 Coordinator 服务器后,就开始向 broker2 进行注册并发送心跳。

同理,consumer2 因为 groupid 是一样的,所以计算结果也是 broker2,最终也向 broker2 进行注册并发送心跳。

broker2 就会把相干 consumer 信息进行保留,并抉择 leader consumer。

谁先注册上来,谁就是 leader consumer。

正文完
 0