同一个数据的leader 和 follower 一定不在同一个节点内(broker id 不同),放在一个区内毫无意义,挂掉了都挂掉了。(副本follower存在的意义就在于当leader挂掉时可以通过副本来恢复数据)。
-
Kafka 中消息是以 topic(主题:作用就是分类) 进行分类的,生产者生产消息,消费者消费消息,都是面向 topic 的。(生产者和消费者都连接一个主题,要指定主题是谁,要往哪个主题发送消息,要从哪个主题拉取数据等)
-
topic 是逻辑上的概念,并不实际存在,而 partition是物理上的概念,是实际存在的,每个partition 对应于一个log文件,该log文件中存储的就是producer生产的数据。producer生产的数据会被不断追加到该log文件的末端,且每条数据都有自己的 offset(数据偏移量)。消费者组中每个消费者,都会实时记录自己消费到哪个 offset , 以便出错时恢复。
分区的原因:
(1)方便在集群中扩展,每个partition可以通过调整以适应它所在的机器,而一个topic 又可以由多个 partition组成,因此整个集群就可以适应任意大小的数据。
(2)可以提高并发,因为可以以partition为单位读写了。