赞
踩
相识满天下,知心能几人。
—— 明·冯梦龙
本文已同步掘金平台,图片依然保持最初发布的水印(如CSDN水印)。(以后属于本人原创均以新建状态在多个平台分享发布)
话说今天是1024,程序猿(媛)节,在“屌丝”盛行之时,称为屌丝节。随着全面小康社会的展望,为了彰显IT界码农的身份,程序猿(媛)由屌丝晋升为“爱码仕”,也许是为了与双十一与时俱进吧。
以上纯tx! 还是来点干货吧…
从上图可以看出,Kafka主要有生产者、broker、消费者群、消费者、zookeeper概念,各个概念一一来讲解。
注:生产者
生产者,以ProducerRecord为对象推送给Kafka broker,ProducerRecord的主要以topic主题、分区partition(可选)、key(可选)、消息体,timestamp(可选)。
源码如下:
注:主题
Kafka以主题topic的方式推送消息,一个主题可以被多个消费者消费。主题里的消息体又以多个分区partition来存储的
注:分区
注:偏移量
每个分区都有一个Offset,这个Offset就是这个生产者的Offset,并且是分区的最大的offset。
当然还有消费者偏移量。下一期,我会详细介绍。
一个分区其实由多个大小相等的Segment(段)组成,每个段Segment file 的消息数量可以不相同,这样方便删除旧的Segment
注:消费群组
多个消费者在同一个组里,成为消费者群。一个分区的消息,只能被同一个消费群里的某一个消费者消费,但能被其它消费者群的某一个消费者消费。
注:消费者
broker消费者分区分配:所有分区的消息被一个消费者消费
broker消费者分区分配过程:p0->c1消费; p1->c2消费; p2->c1消费
broker消费者分区分配过程:p0->c1消费; p1->c2消费; p2->c3消费
broker消费者分区分配过程:p0->c1消费; p1->c2消费; p2->c3消费 ; c4不消费。
因为同一个消费群组里,一个分区只能被其下的一个消费者消费。为什么要这样,其实想想很简单,避免重复消费。
broker消费者分区分配过程:
消费群组group1:p0->c1消费; p1->c2消费; p2->c1消费;
消费群组group2:p0->c1消费; p1->c2消费; p2->c3消费;
消费群组group3:p0->c1消费; p1->c2消费; p2->c3消费 ; c4不消费。
下期预告,敬请关注:
(三)消息队列-Kafka偏移量(Offset)(相念)
学无止境,时不待我!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。