Kafka常见面试题(一)

1、Kafka是什么?

Kafka是高级消息队列,也可以做流处理平台

Kafka主要有两大应用场景:

消息队列:建立实时流数据管道,以可靠地在系统或应用程序之间获取数据。

数据处理:构建实时的流数据处理程序来转换或处理数据流。

2、和其他消息队列对比,Kafka的优势在哪?

相对于RocketMQ、RabbitMQ,它主要有以下优势:

极致的性能:基于Scala和Java语言开发,设计中大量使用了批量处理和异步的思想,最高每秒可以处理千万级别的消息。

生态:Kafka的社区对比其他消息队列的更活跃,兼容性更好。

3、什么是Producer、Consumer、Broker、Topic、Partition?

Producer:生产者;即产生消息的一方。

Consumer:消费者;即消费消息的一方。

Broker:代理;可以看做成是一个独立的Kafka实例。多个Kafka Broker组成一个Kafka Cluster。

Topic:主题;在Kafka里topic是一个虚拟的对象,多个Partition可以放置在Topic里。Producer可以指定主题发送,消费者也可以订阅特定的主题来消费消息。

Partition:分区;消息在同一个Partition是顺序执行的。同一个Topic下的Partition可以分布在不同的Broker上,即Topic可以横跨多个Broker。

4、Kafka多副本机制了解吗?

Kafka的Partition引入了多副本机制,即写入操作只会执行在Leader,而Follower是从Leader里拉去消息进行同步。

即生产者和消费者只与Leader交互,Follower只是Leader的副本拷贝。当Leader副本发生故障时会从Follower中选举出一个Leader,但是Follower的offset与Leader的offset相差太大则不允许参与Leader选举。

5、Kafka的多分区(Partition)以及多副本(Replica)机制有什么好处呢?

Kafka通过给特定的Topic指定多个Partition,而各个Partition可以分布在不同的Broker上,这样便能提供比较好的并发能力。

Partition可以指定对应的Replica数,这也是为了高可用,提高了容灾能力。

6、Kafka如何保证消息的消费顺序?

Kafka中同一个Partition的消息顺序是有序的,Kafka是通过offset来保证消息在分区内消息的顺序性,所以我们在生产消息的时候可以指定发送同一个Partition。

但是这样就违背了Kafka设计初衷。

第二种方法就是用OrderId或者UserId然后除以Partition数量进行取模。得出Partition数后发送给Kafka,这样就能保证发送到同个Partition,保证了消息顺序。

7、Kafka如何保证消息不丢失?

Kafka消息丢失分为两种情况,一种是生产者消息丢失,另外一种是消费者消息丢失。

生产者消息丢失:Producer在send消息到Kafka的时候,是异步的一个操作。可以在send完之后get一下,使其变成一个同步操作。

消费者消息丢失:默认情况下,Kafka会自动提交offset,如果在获取消息的时候,突然程序挂掉了,那Kafka也会自动提交offset。所以可以改成手动提交offset,但是手动提交offset也有会重复消费的问题,即获取完消息之后,程序down了,这时候offset就提交不了,下次获取消息还会获取到该offset的消息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值