码迷,mamicode.com
首页 > 其他好文 > 详细

kafka常见面试题

时间:2020-03-30 09:54:44      阅读:91      评论:0      收藏:0      [点我收藏+]

标签:包括   生产   解耦   副本   消费   inf   根据   相对   ref   

https://blog.csdn.net/qq_28900249/article/details/90346599

1、为什么要使用 kafka,为什么要使用消息队列

 缓冲和削峰  解耦和扩展性  冗余  健壮性  异步通信

2、kafka的分区与消费者关系

分区(partition)
kafka中的topic可以细分为不同的partition,一个topic可以将消息存放在不同的partion中。

leader和follower
每个partition可以设置一个leader和多个follower。kafka的消息没有设置读写分离,每个消息发送时,都是发送至对应的partition的leader-partition,follower-partition主要是为了备份数据而存在,当leader-partion出现故障时,数据已经完全同步的follower-partition也会切换成leader-partition。

AR和ISR
AR:分区中所有的副本统称为AR。
ISR:所有与leader节点保持同步的副本(包括leader节点)组成的节点,生产者首先将消息发送给leader副本,然后follower从leader中同步消息。
ISR是AR的子集

数据的存储
在partion中,一个topic中的数据存放在不同的partion中,一个分区的内容会存储成一个log文件,为了防止log过大,引入了日志分段,根据一定规则将log切分为多个logSegment,相当于一个巨型文件被切分成了很多不同的文件。log和logSegment关系如下:
技术图片

 

 Log在物理上只以文件夹的形式存储,日志文件在磁盘的存储如下:

技术图片

 

 

消费者(consumer)
分组(group)
消费者从partion中消费数据,consumer有group的概念,每个group可以消费完整的一份topic中的数据。

消费者分区分配
RangeAssignor 分配策略(kafka默认的分区策略)
kafka中,consumer消费数据时,consumer消费partition中的数据和consumer与partition的相对数量有关

1、partition大于consumer
当partition大于consumer时,一个consumer可能同时消费多个partition中的数据
技术图片

 

 2、partition小于consumer
当partition小于consumer时,每个consumer会去消费一个partition中的数据。多出来的consumer则是处于空闲状态

技术图片

 

 

3、partition等于consumer
当partition的数量等于consumer时,每个consumer消费一个partition中的数据。

除了这种分区分配策略之外,还有RoundRobinAssignor以及StickyAssignor分区分配策略,当然,也可以自定义分区分配策略。

kafka常见面试题

标签:包括   生产   解耦   副本   消费   inf   根据   相对   ref   

原文地址:https://www.cnblogs.com/gouhaiping/p/12596458.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!