生产者-Kafka集群-消费者组
当生产者往某一个不存在的主题里发数据的时候,它自己会创建一个主题、一个分区和一个副本(server.properties里定义的)。
一般是先会创建一个主题,比如说TopicA,有三个分区,有两个副本(leader+follower总共2个),同一个分区的两个副本肯定不在一个服务器。生产者往三个分区发送消息(发送消息可以批量发送、也可以一个个发送),其中0,1,2,3,4,5叫做偏移量,如图发送了15条消息,每一个分区维护了一个从头开始的偏移量。follower会主动同步(备份)leader的消息(就算同步了,某种特定的情况下也会丢数据),消费者只会找leader消费。

Kafka并不能保证消息的全局有序性,只能保证区内有序。就是说消费消息的时候不是按分区顺序来。
Kafka中的消息是以topic进行分类的,生产者生产消息,消费者消费消息,都是面向topic的。
topic是逻辑上的概念,而partition是物理上的概念。每一个partition对应于一个log文件,该log文件中存储的就是producer生产的数据。producer生产的数据会被不断追加到该log文件末端,且每条数据都有自己的offset。消费者组中的每个消费者,都会实时记录自己消费到了哪个offset,以便出错恢复时,从上次的位置继续消费。