IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 消息队列面试准备 -> 正文阅读

[大数据]消息队列面试准备

  1. 消息队列的应用场景?
  2. 各种消息队列产品的比较
  3. 消息队列的优缺点
  4. 如何保证消息队列的高可用
  5. 如何保证消息不丢失
  6. 如何保证消息不被重复消费?
  7. 如何保证消息消费的顺序性?
  8. 基于MQ的分布式事务实现

消息队列的应用场景

  1. 解耦
    直接使用RPC调用导致系统紧耦合,当一个系统当下游系统宕机的时候会导致上游系统挂掉;以下订单为例;订单系统完成下订单之后,需要在支付系统,库存系统,物流系统完成相应的操作,但是直接使用RPC当其中一个下游系统宕机会导致整个下单流程失败;使用消息队列可以完成下订单,之后的事务延后处理;
  2. 异步
    直接使用RPC会导致同步处理降低系统响应时间;而使用消息队列可以提高系统响应时间,其他事务可以并发执行;
    使用消息队列不适用适用上游系统依赖下游系统处理结果的场景;
  3. 削峰
    秒杀系统可以使用消息队列缓存请求,降低系统负担;?

各种消息队列产品的比较

市面上常见的几种MQ:

  1. RabbitMQ(Java)?
  2. RocketMQ
  3. kafaka

消息队列的优缺点

缺点:

提高系统复杂度

降低系统可用性

一致性问题

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

集群

RabbitMQ:普通集群,镜像集群;

普通集群只有一个服务实际是存储消息的;其他节点可以消费消息,但是实际上不能存储消息数据;存在单实例问题

镜像集群:每个节点都会存储消息数据;单节点宕机不会影响消息的收发;nameServer---Broker分布式架构模式;

RocketMQ双主双从保证高可用;

如何保证消息不丢失

消息丢失的原因:

  1. 生产者发送消息的时候消息丢失;
  2. MQ接收到消息但是没有持久化就宕机
  3. 消费者获取到消息但是还未处理就宕机

如何保证消息不丢失:

  1. MQ给生产者可靠确认
  2. MQ进行消息持久化
  3. 消费者消费消息之后进行消费确认,然后MQ再删除

如何保证消息不被重复消费,如何保证消息消费的幂等性

重复消费的原因----网络不可达---MQ成功接受消息但是接受确认未送达,会导致生产者发送重复消息;

解决:

发送消息时携带消息ID;消费者存储消息消费记录;

幂等性:重复消费消息对业务产生的影响不会变;

如何保证消息消费的顺序性

顺序性:保证同一个生产者的消息消费的顺序性,

顺序性问题产生的原因:集群部署导致不能顺序到达;多个消费者导致消息不能被顺序消费;??

解决:局部消费顺序性----生产者将同一组消息发送到同一个MQ上,多个消费者同时获取消息进行消费;MQ使用分段锁保证单个MQ中消息消费的顺序性;

分段锁:

MQ实现分布式事务的实现

分布式事务:分布式系统下某一事物要么同时成功,要么同时失败;----跨库事务

?

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-10-28 12:27:20  更:2021-10-28 12:27:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 3:41:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码