热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

【面试题】消息队列

目录1.为什么要用消息队列(应用场景)?2.各种消息队列产品的比较3.消息队列的优势和缺点4.如何保证消息队列的高可用࿱

目录

1.为什么要用消息队列(应用场景)?

2.各种消息队列产品的比较

3.消息队列的优势和缺点

4.如何保证消息队列的高可用?

5.如何保证消息不丢失?

6.如何保证消息不被重复消费?(消费幂等性)

重复消息产生的原因

消息幂等性

7.如何保证消息消费的顺序性?

8.大量消息堆积如何处理?

9.消息过期如何处理?




1.为什么要用消息队列(应用场景)?

(考察是否知道为什么要用消息队列?消息队列在项目中解决的是什么问题)

消息队列的本质:是一种“先进先出”的数据结构

常见应用场景:解耦、异步、削峰






2.各种消息队列产品的比较

(考察面试者是否对市面上的MQ产品做过调研?

在选择MQ时是否根据不同MQ的产品特点做过对比和取舍?)

常见消息队列:Kafka、RocketMQ、RabbitMQ、ActiveMQ


3.消息队列的优势和缺点

(考察面试者在项目中引入一个新的技术后,是否全面考虑过新技术对当前项目的影响)

优点:解耦、异步、削峰

缺点:系统可用性降低、系统复杂度提高、一致性问题



4.如何保证消息队列的高可用?

(考察面试者针对可用性降低问题的思考和解决思路,回答自己使用过的一两个MQ产品的高可用方案即可)

RabbitMQ高可用——镜像集群

RocketMQ高可用——双主双从


5.如何保证消息不丢失?

(1.考察是否清楚消息丢失的原因  2.如何保证消息不丢失)

总结:

消息丢失的原因:发送方、MQ、消费方都有可能导致消息丢失

如何保证消息不丢失


  • 发送可靠发送
  • MQ进行消息持久化
  • 消费方消费完毕进行ACK确认,MQ收到消费方的ACK确认再删除本地消息

6.如何保证消息不被重复消费?(消费幂等性)

消息的重复消费和保证幂等性会经常被连着问,当出现了重复消费后,为了保证系统数据的正常,就必须要保证幂等性。

(考察点1.重复消息产生的原因的思考  2.保证消息幂等性的方案)


重复消息产生的原因



消息幂等性

总结:

消息重复原因:网络不可达,不可避免。

幂等性:消息携带全局ID,消费方接到消息时先查询再处理,根据全局ID做判重操作。


7.如何保证消息消费的顺序性?

(1.考察是否理解什么是消息顺序消费 2.考察是否思考过确保消息顺序消费的方案)


8.大量消息堆积如何处理?

(1.考察面试者是否清楚消息堆积的原因  2.消息堆积如何处理)


9.消息过期如何处理?


 


推荐阅读
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有