面试题-MQ

Posted e烽火

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试题-MQ相关的知识,希望对你有一定的参考价值。

MQ篇

1.使用MQ的优缺点及使用场景

优点:

  1. 流量削峰填谷;
  2. 异步处理;
  3. 解耦-降低系统之间的耦合度。

缺点:

  1. 增加了系统的复杂度,可能产生消息丢失,重复消费的问题;
  2. 降低了系统的可用性,mq的故障会影响系统可用性;

场景: 日志采集,发布订阅等

2.消息队列如何保证可靠性传输

消息可靠传输有两层含义:不能多也不能少。这两种问题都会从生产者和消费者的角度去考虑:

  1. 针对于不能多的问题:生产者端一般不会产生多发,这个也不容易控制;消费者端要避免重复消费最稳妥的办法就是消费者实现幂等性,这个既能解决生产者多发的问题也能解决消费者重复消费的问题。
  2. 针对不能少的问题即消息不能丢失:生产者要确保消息到了broker并持久化了,比如rabbitmq的confirm机制以及kafka的ack机制。消费端要采取消费端ack机制,即消费者接收到消息确认无误之后给broker发送一个ack,broker接收到ack之后才删除消息。

3.RabbitMq死信队列的来源及处理

来源:

  1. 消息被拒绝并且requeue=false
  2. 消息过期
  3. 队列达到最大长度

处理:

  1. 丢弃,如果不是很重要,可以选择丢弃
  2. 记录入库进行业务分析和处理
  3. 由负责监听死信队列的应用程序进行处理

4.如何保证消费幂等性

首先mq因为网络的原因是无法保证消息不被重复消费的,需要由消费者自己控制。常见的做法是分配一个全局的消息ID然后基于Redis或数据库的唯一键

5.kafka高性能的原因

  1. 磁盘顺序读写,顺序读写能充分利用预读
  2. 零拷贝,磁盘文件->内核空间读取缓冲区->网卡接口->消费者进程
  3. 分段区+索引,kafka将消息分布式存储在segment中,又为分段后的数据文件建立了索引,提高了数据访问效率,同时也提高了数据操作的并行度
  4. 批量读写/批量压缩
  5. 直接操作pagecache而不是JVM

以上是关于面试题-MQ的主要内容,如果未能解决你的问题,请参考以下文章

Tencent后台开发Java岗二面:java并发编程实战

java培训机构老师为什么那么爱忽悠人,从理论到实践!

java程序设计慕课版课后答案浪潮优派,不吃透都对不起自己

阿里P6+面试:介绍下观察者模式?

阿里P6+面试:介绍下观察者模式?

吐血整理50家企业真实大数据面试题!!学长实测,真实面试!!快收藏!