消息中间件面试题
1、RabbitMQ篇
1.1、RabbitMQ如何保证消息不丢失?
1、生产者服务宕机了,导致发送不成功
2、交换机发送不到队列
3、MQ宕机了 导致消息丢失
4、消费者宕机了 没消费到消息
解决第一二个问题,生产者发送消息失败
解决第三个问题,MQ宕机
解决第四个问题,消费端有异常
1.2、RabbitMQ重复消费
看完上面的应该知道,消费者有个确认机制
如果说消费者在向队列发确认ack的时候,由于网络抖动或者消费者挂掉了,导致队列没有收到确认,
过了一会儿网络又好了,队列说我没有收到确认ack,我要再重试一次,这样对于消费者来说就要重复处理消息了
1.3、RabbitMQ死信交换机(延迟队列)
1.4、RabbitMQ如果有100万消息堆积在MQ,如何解决(消息堆积怎么解决)
1.5、RabbitMQ的高可用机制有了解过嘛
2、Kafka篇
2.1、Kafka怎么保证消息不丢失?
1、针对第一类,生产者发送消息到Broker消失
2、针对第二类,Broker怎么解决消息不丢失的问题?
发生重平衡的原因是:比如consumer2挂掉了,现在consumer2的任务给了consumer1,如下图
而此时,consumer实际消费到了6,但是只提交到了3,因为是每隔5s提交一次,所以consumer1可能会重复消费到456
原因是因为偏移量是每隔5s自动提交的,现在可以改成手动提交偏移量
2.2、kafka怎么保证消息的顺序消费?
2.3、Kafka的高可用机制?
2.4、Kafka的数据清理机制
2.5、Kafka中实现高性能的设计有了解过吗?
为什么顺序读写快?寻址快呗!
零拷贝:
生产者放消息 和 消费者消费消息 在操作系统中的流图
从磁盘文件拷贝到页缓存 第一次拷贝
从页缓存拷贝到kafka 第二次拷贝
从kafka拷贝到Socket缓冲区 第三次拷贝
从Socket缓冲区拷贝到网卡 第四次拷贝
现在kafka知道了哪一个消费者要消费消息,把所有的事情都委托给了操作系统操作,直接从页缓存把数据放进了网卡,这样做,只拷贝两次就行了
原文地址:https://blog.csdn.net/weixin_45768501/article/details/137505149
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!