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 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 消息中间件详解 -> 正文阅读

[大数据]消息中间件详解

概述

消息中间件是基于队列与消息传递技术,在网络环境中为应用系统提供同步或异步、可靠的消息传输的支撑性软件系统。

那 MQ 解决了什么问题?

对于电商app来说,顾客下单后要扣减商品库存,还要更新订单状态等一系列操作。当并发量大的时候,服务器磁盘、IO、CPU load 会很高,因此有的时候需要一个相对较长的时间间隔才能完成上述的一系列操作。如果用户提交完订单,让用户等待几秒才能成功,对于用户来说,会很不耐烦,甚至会流失大量用户。

如果有了 MQ ,可以让系统间的通信变为异步通信,系统A 发个消息到 MQ,系统 B什么时候获取消息进行处理,系统A不用管,系统A向MQ发送完消息只需要给用户及时反馈即可,剩下的操作系统B可能会在未来的几秒、几分钟甚至几小时后才进行处理。


使用场景

  • 跨系统数据传递
  • 高并发流量削峰
  • 数据分发和异步处理
  • 大数据分析与传递
  • 分布式事务

消息中间件

协议

AMQP(Advanced Message Queuing Protocol) 是高级消息队列协议,是一个提供统一消息服务的应用层标准高级消息队列协议,是应用协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。

常见的消息中间件协议有:OpenWire、AMQP、MQTT、Kafka、OpenMessage

大部分消息中间件采用的是 AMQP 协议,那为什么不用 http 协议?

  1. http请求报文头和响应报文头比较复杂,包含了 cookie,数据的加密解密、状态码、响应码等附加的功能,但对于一个消息而言,不需要这么复杂,没有这个必要性,它其实就是负责数据传递、存储、分发就可以,追求的是高性能、尽量简洁、快速。
  2. 大部分情况下 http 都是短连接,在实际交互中,一个请求到响应很有可能中断,没进行持久化中断的话,会造成请求丢失。不利于消息中间件的业务场景,消息中间件可能是一个长期的获取消息的过程,出现问题和故障要对数据或消息进行持久化,目的是为了保证消息和数据的高可靠性。

实际上,AMQP是基于以上原因在 TCP/IP 协议基础上设计的协议。

AMQP特性:

  • 分布式事务支持
  • 消息的持久化支持
  • 高性能和高可靠的消息处理优势

消息分发策略机制

ActiveMQRabbitMQKafkaRocketMQ
发布订阅支持支持支持支持
轮询分发支持支持支持/
公平分发/支持支持/
重发支持支持/支持
消息拉取/支持支持支持

实现方式

ActiveMQRabbitMQRocketMQKafka
单机吞吐量万级万级10万级,高吞吐10万级,高吞吐
时效性ms级微秒级,延迟低ms级ms级以内
可用性高,基于主从架构高,基于主从架构非常高,分布式架构非常高,分布式架构
可靠性较低的概率数据丢失基本不丢失经过参数优化配置,可以做到0丢失经过参数优化配置,可以做到0丢失
功能支持功能完备并发能力强,性能好,延迟低功能完善,扩展性好支持简单MQ功能,大数据领域被大规模使用

高可用机制

是指产品在规定的条件和规定的时间内处于可执行规定功能状态的能力。当业务量增加时,请求也过大,一台消息中间件服务器会触及硬件的极限,一台消息服务器已经无法满足业务的需求,所以消息中间件必须支持集群部署,来达到高可用的目的。


集群模式1 - Master - Slave 主从共享部署

生产者将消息写入到 master 节点,slave 节点连接 master 队列共享一个数据区域。一旦 master 挂掉,生产者就无法将消息发送到队列。

集群模式2 - Master - Slave 主从同步部署

生产者将消息写入到 master 节点,master 会同步数据到 slave 形成副本,如果有多个消费者就可以去不同的节点进行消费。但是消息的拷贝和同步会占用很大的带宽和网络资源。


集群模式3 - 多主集群同步部署

生产者将消息写入到master和slave所有节点,消费者也可以从任意节点消费消息。


集群模式4 - 多主集群转发部署

生产者可以向任意节点写入消息,如果向 broker1 中写入消息,broker1 中会存储数据的相关描述和记录存放的位置,也就是元数据信息。broker1 会向其他的 broker 同步元数据信息。消费者也可以从任意节点消费消息,如果从 broker2 中消费消息,broker2 自己没有对应的信息,可以从对应的元数据信息中查询,返回对应的元消息信息。


集群模式5 - Master - Slave 与 Breoker - Cluster 组合

实现多主多从的热备机制保证消息的高可用。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-07-13 17:31:50  更:2021-07-13 17:32:29 
 
开发: 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年5日历 -2024/5/1 12:42:50-

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