kafka的工作流程和文件存储机制:
当生产者往一个不存在的主题发送数据的时候,也可以发送。自己会帮你创建主题,一个分区,一个副本。是server.properties文件里面配置的。这是默认值。
我们一般会先创建topic叫做topicA
topicA有三个分区,两个副本。
副本数=2,是说,leader+follower=2
partition-0的follower一定不会和partition-0的leader在同一个broker(节点)。因为没有任何意义。
现在生产者往三个broker里面发送消息。可以批量发送,当然一个批次里面只有一条数据也是可以的,也可以一个一个发送。
这些东西是偏移量。总共发送了15条消息。每一个分区里面维护了一个从头开始的偏移量。不是一个全局的偏移量。
follower做什么事情?
它是一个备份,主动找leader去做同步,备份leader里面备份数据。
但是就算同步了,可能还会数据丢失。
消费者要保存的偏移量就是offset
存数据的时候,给每一个人offset,后面写代码可以看到这个内容。我们可以在producer发送完数据之后,再要求他返回偏移量。就能看到两个分区同步增长。
0号分区有个22,1号分区同样有22。
如果全局有个偏移量的话,不可能同一个主题里面的两个分区,出现两个22.
每个人都维护了独立的
对于kafkaMQ来说,它不能保证消息的全局有序性,只能保证,区内有序,有序指的是,生产顺序和消费顺序有序,但是如果是全局的话,就不一定有序。
kafka种的消息是以主题分类的。
生产者和消费者都是面向主题的。
topic是逻辑上的,找不到文件夹。
我们之前看到的数据是以topic+分区号来命名的(first-0)
没有看到topicA这个文件夹。真正存在的是分区。分区时物理上的概念。