自学内容网 自学内容网

消息中间件面试题

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)!