1.kafka怎么避免重复消费?
答:利用两阶段事务提交或者容器去重(Hash Set、布隆过滤器、Redis)
2.Kafka怎么保证顺序消费?
答:kafka是全有无序,区间有序,如果要保证消费者顺序消费只能有一个分区,或发送时指定分区发送,消费时指定消费分区
3.Kafka分区有什么用?
答:分区可以提高读写效率、方便集群扩容、方便消费者负载均衡
4.消费者如何保证数据不丢失?
答:先进行消费后提交
5.消费者group订阅了一个topic,当topic接受到消息时,消费者group上的所有消费者能接受到消息吗?
答:一条消息同一时刻只能被同一个消费者组内的一个消费者所消费,也可以被其他消费者组再次消费
6.kafka如何保证数据不丢失?
答:1) 生产者如何保证消息不丢失?--ack设置为all或者-1表示需要leader+follower确认才认为写入成功
2)消费者如何保证消息不丢失?---先消费后提交
3)kafka本身如何保证?---副本机制
7.kafka为什么那么快?
答: 1)架构层面--分布式的!多个人干活比一个人块!--如何体现?---不同分区放到不同机器
2)硬件层面--顺序写SequenceIO,追加写
3)读写模式层面--写是推模式,读是拉模式
4)读细节:使用二分查找index中对应的offset数据在.log中的位置
5)扩展:内核层面--零拷贝机制+PageCache(下面两个网站讲解零拷贝机制+PageCache)