Topic
逻辑概念,一个Topic代表了一类资源
Broker
物理概念,一个broker代表一台主机
Partition
逻辑概念,一个Topic可以创建多个Partition,每个partition内部,消息是顺序排列的,Partition和broker没有必然联系(可以参考Partition分配到broker的策略)。partition实现上类似于文件夹,一个partition就是一个存储kafka数据(称为log)的目录,一个partition只能位于一个broker上。
Partition顺序写磁盘,不需要关心锁的问题,保证了Kafka的高吞吐量;多个partition是为了解决磁盘IO的性能限制,如果需要保证消息顺序的话,要注意Producer的partition分配
Consumer
消费者,消费Kafka中存储的数据
Offset
offset记录了一个consumer在一个partition中消费数据的位置。
Producer
生产者,生产数据到Kafka
Consumer Group
一个Topic的一个Partition,只能被同一个ConsumerGroup的一个消费者消费,所以每个partition针对每个Group都有一个offset,offset由group和partition唯一指定;
注意:当使用高级消费,不指定Partition的时候,kafka-clients api会保证“一个Topic的一个Partition,只能被同一个ConsumerGroup的一个消费者消费”,但是使用低级消费,指定partition的时候,如果两个consumer的partition重合,则两个consumer都能够消费到数据,但是offset使用的还是同一个,会出现数据重复消费和丢失!
【参考链接】
Kafka背景及架构介绍(http://www.infoq.com/cn/articles/kafka-analysis-part-1)
KafkaPartition与Broker的映射关系(https://www.jianshu.com/p/5c4a915843a4)
领取专属 10元无门槛券
私享最新 技术干货