kafka阶段学习小结(面试)
https://blog.youkuaiyun.com/qq_28900249/article/details/90346599
主要是借鉴这篇文章的一些问题,做一个小总结,每回看到这些题都要好好思考一下。
1.请说明什么是Apache Kafka?
2.为什么要使用kafka,为什么要使用消息队列
3.kafka中的ISR,AR又代表什么?ISR的伸缩又指什么?
4.kafka中的broker是干什么的?
5.kafka中的zookeeper起到什么作用,可以不用zookeeper吗?
6.kafka follower如何与leader同步
7.什么情况下一个broker会从isr中踢出去
8.kafka为什么那么快
9.kafka producer如何优化打入数据
10.kafka producer发送消息,ack 为0,1,-1的时候代表啥,设置-1的时候,什么情况下,leader会认为一条消息commit
11.kafka中consumer group是什么概念?
12.kafka中的消息是否会丢失和重复消费?
13.为什么kafka不支持读写分离?
14.kafka中是怎么体现消息顺序性的?
其他一些问题
https://blog.verysu.com/article/417
- 请说明什么是Apache kafka?
- 说说kafka的使用场景?
- 使用kafka有什么优点和缺点?
- 使用kafka性能很好,体现在哪里?
- 请说明什么是传统的消息传递方式?
- 请说明kafka相对传统技术有什么优势?
- 解释kafka的zookeeper是什么?我们可以在没有Zookeeper的情况下使用kafka吗?
- 解释kafka用户如何消费消息?
- 解析如何提高远程用户的吞吐量?
- 解释一下,在数据制作过程中,你如何能从kafka得到准确的消息?
- 解释如何减少isr中的扰动?broker什么时候离开isr?
- kafka为什么需要复制?
- 如果副本在isr中停留了很长时间表明什么?
- 请说明如果首选的副本不在isr中会发生什么?
- 有可能在生产后发生消息偏移吗?
- kafka的设计是什么样的呢?
- 数据传输的事务定义有哪三种?
- kafka判断一个节点是否还活着有连个条件?
- producer是否直接将数据发送到broker的leader(主节点)?
- kafka consumer是否可以消费指定分区消息?
- kafka消息采用pull模式还是push模式
1. kafka里面用的什么方式消费数据,拉的方式还是推的方式?
拉的方式:有消费者控制消费速率
2. 为什么用kafka?kafka是如何存数据的?
kafka将数据按照不同的分类存储在不同的topic中(人为分类),Topic中有分区(partition)以及副本(replication)的概念。在每个分区中(即一个目录中),会存储为一个个segment文件(即.log文件)和index文件
3. kafka元数据存在哪里?
Zookeeper:有如下一些节点/controller,/cluster,/consumer,/broker
4. 如何保证数据不会出现丢失或者重复消费的情况?做过哪些预防措施,怎么解决以上问题的?
数据丢失问题:同步发送数据:ACK=-1(all)
重复消费问题:自己维护offset避免重复消费的问题(低级api)
5.如何提高kafka的消费速度
增加分区和消费者
增加拉取数据的大小
增大批处理的大小
6.为什么kafka可以实现高吞吐?单节点kafka的吞吐量比其他消息队列大,为什么?
- 零拷贝(zero-copy):减少或消除数据拷贝
- 顺写日志:顺序写磁盘的效率比随机写高
- 分段日志:日志存储是分段的segment,其中对每一个分段还会有一个索引,利用二分查找,速率高
- 批处理:读写时客户端会维护一个Batch
- 压缩:数据可压缩,传输效率高
7 .kafka原理,isr中什么情况下brokerid会消失?
副本down掉,网络阻塞
log(数据落后):低版本有replica.lag.time.max.ms和replica.lag.max.messages属性决定,高版本只有replica.lag.max.messages这个参数
8.kafka消费用的高级API,低级API
高级:KafkaConsumer
poll(获取数据的方法)
低级:核心类SimpleConsumer
send(发送获得元数据的请求)
fetch(发送抓取数据的请求)