​ ​ ​ Kafka的基本概念

170 阅读1分钟

Kafka的基本概念

基本概念:

broker: 一个kafka实例,上面可以承载多个分区 topic:特定的主题,一个主题可以有多个分区。一个分区可以分布在多个broker上。 对于每个分区,可以指定一个leader,多个follower作为副本(一主多从) 对于某个broker,它可以同时是A、B分区的leader,还可以是C、D的follower

对于每条消息,它都会有一个offset,作为在分区里的唯一标识。简单理解就是数组的下标 LEO (Log End Offset)标识下一条消息的offset,这个概念是每个分区里的每个broker都有一个LEO HW (High Water Mark) 只有offset满足HW -1的消息,才是消费者可见的。每个分区只有一个HW,HW取这个分区里LEO的最小值

场景说明

假设目某分区现有1主,2从,且HW和LEO都是3,即现在有offset为0,1,2的三条消息,且leader又写入了2条 由于每个follower的同步效率不同,副本A完全同步了leader,而副本B只同步到了一条。此时leader和两个follower的LEO分别为5、5、4 则此时的HW取这个分区里LEO的最小值,即4。此时消息0,1,2,3是可以被消费的,而4是不可见的

好处

如果要求所有副本都复制完才消息可见,这样对性能影响太大 如果只要leader完成了复制消息就可见,这可能导致消息丢失 kafka这种同步方式有效地权衡了数据的可靠性和性能之间的关系