面试题Kafka问题之Kafka【线上】积压消费如何解决

简介: 面试题Kafka问题之Kafka【线上】积压消费如何解决

问题一:Kafka如何保证数据不会丢失?


Kafka如何保证数据不会丢失?


参考回答:

• 生产者生产消息可以通过comfirm配置ack=all解决;

• Broker同步过程中leader宕机可以通过配置ISR副本+重试解决;

• 消费者丢失可以关闭自动提交offset功能,系统处理完成时提交offset。


关于本问题的更多问答可点击原文查看:

https://developer.aliyun.com/ask/628399



问题二:Kafka如何保证顺序消费?


Kafka如何保证顺序消费?


参考回答:

• 单 topic,单partition,单 consumer,单线程消费,吞吐量低,不推荐;

• 如只需保证单key有序,为每个key申请单独内存 queue,每个线程分别消费一个内存 queue 即可,这样就能保证单key(例如用户id、活动id)顺序性。


关于本问题的更多问答可点击原文查看:

https://developer.aliyun.com/ask/628398



问题三:Kafka【线上】如何解决积压消费?


Kafka【线上】如何解决积压消费?


参考回答:

• 修复consumer,使其具备消费能力,并且扩容N台;

• 写一个分发的程序,将Topic均匀分发到临时Topic中;

• 同时起N台consumer,消费不同的临时Topic。


关于本问题的更多问答可点击原文查看:

https://developer.aliyun.com/ask/628397



问题四:Kafka如何避免消息积压?


Kafka如何避免消息积压?


参考回答:

• 提高消费并行度

• 批量消费

• 减少组件IO的交互次数

• 优先级消费

if (maxOffset - curOffset > 100000) {  // TODO 消息堆积情况的优先处理逻辑  // 未处理的消息可以选择丢弃打日志  return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;}// TODO 正常消费过程return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;


关于本问题的更多问答可点击原文查看:

https://developer.aliyun.com/ask/628401



问题五:如何设计Kafka消息队列?


如何设计Kafka消息队列?


参考回答:

需要支持快速水平扩容,broker+partition,partition放不同的机器上,增加机器时将数据根据topic做迁移,分布式需要考虑一致性、可用性、分区容错性

• 一致性:生产者的消息确认、消费者的幂等性、Broker的数据同步;

• 可用性:数据如何保证不丢不重、数据如何持久化、持久化时如何读写;

• 分区容错:采用何种选举机制、如何进行多副本同步;

• 海量数据:如何解决消息积压、海量Topic性能下降;

性能上,可以借鉴时间轮、零拷贝、IO多路复用、顺序读写、压缩批处理。


关于本问题的更多问答可点击原文查看:

https://developer.aliyun.com/ask/628402

相关文章
|
1月前
|
消息中间件 存储 缓存
大厂面试高频:Kafka 工作原理 ( 详细图解 )
本文详细解析了 Kafka 的核心架构和实现原理,消息中间件是亿级互联网架构的基石,大厂面试高频,非常重要,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:Kafka 工作原理 ( 详细图解 )
|
4月前
|
消息中间件 存储 负载均衡
Kafka面试题及答案
Kafka面试题及答案
|
29天前
|
消息中间件 大数据 Kafka
大厂面试高频:Kafka、RocketMQ、RabbitMQ 的优劣势比较
本文深入探讨了消息队列的核心概念、应用场景及Kafka、RocketMQ、RabbitMQ的优劣势比较,大厂面试高频,必知必会,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:Kafka、RocketMQ、RabbitMQ 的优劣势比较
|
2月前
|
消息中间件 存储 缓存
美团面试: Kafka为啥能实现 10Wtps 到100Wtps ?kafka 如何实现零复制 Zero-copy?
40岁老架构师尼恩分享了Kafka如何实现高性能的秘诀,包括零拷贝技术和顺序写。Kafka采用mmap和sendfile两种零拷贝技术,前者用于读写索引文件,后者用于向消费者发送消息,减少数据在用户空间和内核空间间的拷贝次数,提高数据传输效率。此外,Kafka通过顺序写日志文件,避免了磁盘寻道和旋转延迟,进一步提升了写入性能。尼恩还提供了系列技术文章和PDF资料,帮助读者深入理解这些技术,提升面试竞争力。
美团面试: Kafka为啥能实现 10Wtps 到100Wtps ?kafka 如何实现零复制 Zero-copy?
|
4月前
|
消息中间件 算法 Java
面试官:Kafka中的key有什么用?
面试官:Kafka中的key有什么用?
166 3
面试官:Kafka中的key有什么用?
|
2月前
|
消息中间件 存储 Kafka
面试题:Kafka如何保证高可用?有图有真相
面试题:Kafka如何保证高可用?有图有真相
|
5月前
|
消息中间件 算法 NoSQL
面试题Kafka问题之Kafka保证系统的可用性如何解决
面试题Kafka问题之Kafka保证系统的可用性如何解决
47 0
|
4月前
|
存储 Java
【IO面试题 四】、介绍一下Java的序列化与反序列化
Java的序列化与反序列化允许对象通过实现Serializable接口转换成字节序列并存储或传输,之后可以通过ObjectInputStream和ObjectOutputStream的方法将这些字节序列恢复成对象。
|
28天前
|
存储 缓存 算法
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!
本文介绍了多线程环境下的几个关键概念,包括时间片、超线程、上下文切换及其影响因素,以及线程调度的两种方式——抢占式调度和协同式调度。文章还讨论了减少上下文切换次数以提高多线程程序效率的方法,如无锁并发编程、使用CAS算法等,并提出了合理的线程数量配置策略,以平衡CPU利用率和线程切换开销。
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!
|
1月前
|
存储 算法 Java
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
本文详解自旋锁的概念、优缺点、使用场景及Java实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?