kafka系列8----小结与面试题

现在你已经看完kafka,可以问自己如下几个问题,看自己掌握得如何

  1. 为什么选择kafka而不是其他JMS?其优势是什么,应用场景有哪些

易上手,吞吐量高

    2.你的业务真的需要kafka吗?

使用kafka会带来运维成本,如果你的业务数据量小到可以不用kafka时,就不用kafka。比如你的系统就几个用户使用,然后你用kafka实现一个异步短信功能给,给他们发短信,那就有点杀鸡用牛刀了

     3. kafka会不会数据丢失?比如集群中有些机器当机了这种情况

对于数据提交,只要有足够的broker节点,且ack设置为大于1,基本就不会有数据丢失。如果ack小于等于1,kafka是采用异步提交,此时数据会丢失,但是能很大地提高kafka的吞吐量。另外一些极端情况可能会导致数据丢失,比如ack=3,但此时broker因为当机只剩下2个,此时数据无法写入,而如果broker全部挂掉,此时数据就会丢失,这种情况是可能发生的,比如所有kafka在同一个机房,而机房在某一时刻断电了,所以当可靠性要求很高的情况下,应考虑kafka跨机房部署

对于数据消费,如果要保证consumer的exactly-once语义,就要使用事务型producer,或2阶段提交协议

     4. 为什么说kafka快

参考kafka高性能内幕一节

     5. 如果consumer当机了会发生什么?如果当机后又连接回来了,又会发生什么?主要了解再均衡机制以及有组消费者和无组的消费者

对于有组消费者,这得看消费者组的设置了。如果消费者组内的消费者数大于分区,且当机的consumer并没有消费分区数据,此时当机几乎没啥影响,新增消费者也几乎没啥影响。如果消费者组内消费者数小于分区数,此时consumer当机或有新的consumer加入,都会触发再均衡

    对于无组消费者,因为无组,所以自己给自己分配分区和消费分区内的数据,所以无法增加消费者,因为无组。如果当机,也不会发生再均衡,因为从头到尾,就只有一个消费者

 

     6. consumer组是怎么实现组内负载均衡的

当consumer掉线且该consumer原本处理分区数据,而不是闲置的,或增加consumer且consumer数小于分区数,都会触发再均衡,从而实现组内负载均衡

     7. kafka broker集群怎么确定节点是否存活

参考复制一节

 

     8. kafka读写分离

kafka没有读写分离,原因参考相关小节

 

     9. kafka怎么进行集群故障转移

如果leader当机,通常kafka会从follower中选一个作为leader,通常是从ISR中选,因为ISR中的follower是跟leader保持同步的。

如果follower当机,通常没啥问题,但可能会有警告。当存活的follower+leader的数量小于ack,可能会禁止数据写入

 

     10. kafka主从数据是怎么保持一致的,也就是如果一个follower掉线,过了一段时间又回来了,那这个follower会跟leader保持一致吗

不会。follower实际上也是consumer,专门用于拉取和存储leader数据。所以follower回来后,会自动从leader拉取数据,直至保持同步

 

     11. 分区是怎么分布到集群中的节点的?

假设集群中有2个主从集群,则每个主从集群均匀分到分区。如果分区数大于2,此时显然多了一个分区,那这个多出分区怎么处理?能新加入一个主从集群吗?

多出的分区会随机存在于其中一个broker。当加入一个新机器,此时分区不会自动分到新的broker(新的版本可能会改进这点也不一定),然后可以使用重新分区工具进行重新分区

 

     12. kafka怎么扩容缩容,另外topic能动态进行分区吗

参考kafka集群扩容缩容一节。topic可以使用重新分区工具来重新分区

 

     13. kafka能动态增加follower吗

kafka新建topic时,自动会有一个分区成为leader,另一些为follower。分区数在新建topic时就指定了,但可以用重新分区工具修改。

 

     14. 生产者发送数据,如果broker当机了,会不会一直重复发

这个得看配置,默认配置通常是重试1次或3次,你也可以自己进行配置,或在自己的java代码中去处理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值