关键词:
文章目录
1. RocketMQ介绍
1.1 RocketMQ介绍
RocketMQ是阿里开源的一款非常优秀中间件产品 ,脱胎于阿里的另一款队列技术MetaQ ,后捐赠给Apache基金会作为一款孵化技术 ,仅仅经历了一年多的时间就成为Apache基金会的顶级项目。
并且它现在已经在阿里内部被广泛的应用 ,并且经受住了多次双十一的这种极致场景的压力。 ( 例如:2017年的双十一 ,RocketMQ流转的消息量达到了万亿级 ,峰值TPS达到5600万 ) 。并且其内部通过Java语言开发 ,便于阅读与修改。
官网地址:http://rocketmq.apache.org/
中文文档:https://github.com/apache/rocketmq/tree/master/docs/cn
RocketMQ中的基本概念这里就不赘述了,同学们可以看一下官网的文档,也可以看我从官网上摘下来的(方便进不去GitHub的同学快速查看)https://blog.csdn.net/weixin_45525272/article/details/125936524
1.2 MQ的主要应用场景
MQ全称为Message Queue ,即消息队列 ,开发中消息队列通常有如下应用场景 :
应用场景 | 说明 |
---|---|
限流削峰 | MQ可以将系统的超量请求暂存其中,以便系统后期可以慢慢进⾏处理,从⽽避免了请求的丢失或系统 被压垮。 |
异步&解耦 | 上游系统对下游系统的调⽤若为同步调⽤,则会⼤⼤降低系统的吞吐量与并发度,且系统耦合度太⾼。 ⽽异步调⽤则会解决这些问题。所以两层之间若要实现由同步到异步的转化,⼀般性做法就是,在这两层间添加⼀个MQ层。 即使消费者挂掉也不影响⽣产者⼯作,只要把消息放⼊队列即可,消费者收到消息后⾃⼰消费即可。 |
数据收集 | 分布式系统会产⽣海量级数据流,如:业务⽇志、监控数据、⽤户⾏为等。针对这些数据流进⾏实时或 批量采集汇总,然后对这些数据流进⾏⼤数据分析,这是当前互联⽹平台的必备技术。通过MQ完成此 类数据收集是最好的选择。 |
⼤数据处理 | ⽐如我们的平台向“三⽅平台”获取数据,⼀次请求了⼤量数据回来要进⾏处理,由于数据较多处理不过来,那么就可以放⼊MQ,再创建⼀些消费者进⾏数据处理即可。 |
1.3 MQ的应用场景举例
1、限流削峰
例如上文说的:阿里双十一 ,RocketMQ流转的消息量达到了万亿级 ,峰值TPS达到5600万 ,其中就要应用限流削峰,避免压垮系统
1、任务异步处理。
将不需要同步处理的并且耗时长的操作由消息队列通知消息接收方进行异步处理。提高了应用程序的响应时间。
例如:有个订单服务需要对订单进行数据持久层操作,在仓储表与物流表中进行订单信息的存储
用传统方式流程如下图所示 :
订单服务需要同步调用两个服务进行信息的持久化操作
我们使用消息队列改造后方式如下图所示:
交互流程如下 :
- 订单服务发消息到消息队列。
- 消息队列将消息发给仓储服务和物流服务。
- 仓储服务和物流服务接收到消息进行业务处理。
3、应用程序解耦合
MQ相当于一个中介 ,生产方通过MQ与消费方交互 ,它将应用程序进行解耦合。
就例如上图中 ,消息队列将订单服务和仓储服务进行解耦合 ,将订单服务和物流服务进行解耦合。
4、日志收集 :
进行统一业务日志收集 ,供分析系统进行数据分析 ,消息队列作为日志数据的中转站。
交互流程如下 :
1、采集系统从log日志文件采集数据 ,发送至消息队列 。
2、各日志需求服务从消息队列 接收消息进行日志处理。
1.4 消息队列技术选型对比
市场上还有哪些消息队列 ?
答:ActiveMQ ,RabbitMQ ,ZeroMQ ,Kafka ,MetaMQ ,Redis。
1.3.1 主流消息队列优缺点比较
消息队列 | 优点 | 缺点 |
---|---|---|
RabbitMQ | 1.支持AMQP协议 2.基于erlang语言开发 ,高并发性能较好 3.工作模式较为灵活 4.支持延迟消息 5.提供较为友好的后台管理页面 6.单机部署 ,1~2WTPS | 1.不支持水平扩容 2.不支持事务 3.消息吞吐量三者最差 4.当产生消息堆积 ,性能下降明显 5.消息重发机制需要手动设置 6.不支持消息重复消费 |
RocketMQ | 1.高可用 ,高吞吐量 ,海量消息堆积 ,低延迟性能上 ,都表现出色 2.api与架构设计更加贴切业务场景 3.支持顺序消息 4.支持事务消息 5.支持消息过滤 6.支持重复消费 7.支持延迟消息 8.支持消息跟踪 9.天然支持集群、负载均衡 10.支持指定次数和时间间隔的失败消息重发 11.单机部署 ,5~10WTPS | 1.生态圈相较Kafka有所不如 2.消息吞吐量与消息堆积能力也不如Kafka 3.不支持主从自动切换 4.只支持Java |
Kafka | 1.高可用 ,高吞吐量 ,低延迟性能上 ,都表现出色 2.使用人数多 ,技术生态圈完善 3.支持顺序消息 4.支持多种客户端 5.支持重复消费 | 1.依赖分区 ,消费者数量受限于分区数 2.单机消息过多时 ,性能下降明显 3.不支持事务消息 4.不支持指定次数和时间间隔的失败消息重发 |
当你项目要实现如下功能时,选用RocketMQ是一个不错的选择 :
- 支持事务消息
- 支持延迟消息
- 天然支持集群、负载均衡
- 支持指定次数和时间间隔的失败消息重发 详细的技术选型对比如下 :
云原生事件驱动引擎(rocketmq-eventbridge)应用场景与技术解析
在刚刚过去的RocketMQSummit2022全球开发者峰会上,我们对外正式开源了我们的新产品RocketMQ-Eventbridge事件驱动引擎。RocketMQ给人最大的印象一直是一个消息引擎。那什么是事件驱动引擎?为什么我们这次要推出事件驱动引擎... 查看详情
消息队列常用应用场景介绍
...用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ消息队列应用场景以下介绍消息队列在实际应用中常用的使用场景。1异步处理场景说明:用户注册后,需要发注册邮件和注册短信。传统的做法有两种1.串行的方式... 查看详情
rocketmq原理介绍及详细安装教程(代码片段)
一、为什么选择RocketMQApacheRocketMQ自诞生以来,因其架构简单、业务功能丰富、具备极强可扩展性等特点被众多企业开发者以及云厂商广泛采用。历经十余年的大规模场景打磨,RocketMQ已经成为业内共识的金融级可靠业务... 查看详情
阿里资深架构推荐:rocketmq实战与原理解析。
...的日志传输领域到后来阿里集团全维度在线业务的支撑,RocketMQ被广泛用于交易、数据同步、缓存同步、IM通讯、流计算、IoT等场景。在双11全球狂欢节中,RocketMQ以万亿级的消息总量支撑了全集团3000多个应用,为复杂的业务场景... 查看详情
rocketmq与springboot封装
...性能,高可用,可伸缩和最终一致性架构。zebra架构选用RocketMQ作为消息队列组件,下面介绍下RocketMQ如何与Springboot进行组合封装。 查看详情
消息队列常见的几种使用场景介绍
...用较多的消息队列有ActiveMQ、RabbitMQ、ZeroMQ、Kafka、MetaMQ、RocketMQ。二、消息队列应用场景以下介绍消息队列在实际应用中常用的使用场景:异步处理,应用解 查看详情
rocketmq核心技术精讲与高并发抗压实战
第1章课程介绍为什么掌握RocketMQ消息中间件技术对于跳槽,晋级如此重要?学习RocketMQ技术,为什么首选这门课程?电商平台双11高并发场景下是如何抗压的?MQ部分的落地是如何做的?这章讲重点为你解答这些疑惑1-1课前必读(... 查看详情
rocketmq核心技术精讲与高并发抗压实战
第1章课程介绍为什么掌握RocketMQ消息中间件技术对于跳槽,晋级如此重要?学习RocketMQ技术,为什么首选这门课程?电商平台双11高并发场景下是如何抗压的?MQ部分的落地是如何做的?这章讲重点为你解答这些疑惑1-1课前必读(... 查看详情
rocketmq监控之rocketmq-console应用
...要有控制应用的手段,以及对应用状态了解的方法,故而rocketmq-console产生了rocketmq-console介绍RocketMQ有一个对其扩展的开源项目incubator-rocketmq-externals,这个项目中有一个子模块叫“rocketmq-console”,这个便是管理控制台项目了。这... 查看详情
消息队列常用应用场景介绍
...用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ消息队列应用场景以下介绍消息队列在实际应用中常用的使用场景。1异步处理场景说明:用户注册后,需要发注册邮件和注册短信。传统的做法有两种1.串行的方式... 查看详情
《海量日志数据分析与应用》场景介绍及技术点分析
接下来几个实验如下:2、数据采集:日志数据上传3、数据加工:用户画像4、数据分析展现:可视化报表及嵌入应用5、社交数据分析:好友推荐阅读原文请点击 查看详情
rocketmq核心技术精讲与高并发抗压实战(最新完整)
课程目录:第1章课程介绍为什么掌握RocketMQ消息中间件技术对于跳槽,晋级如此重要?学习RocketMQ技术,为什么首选这门课程?电商平台双11高并发场景下是如何抗压的?MQ部分的落地是如何做的?这章讲重点为你解答这些疑惑1-1... 查看详情
基于rocketmqprometheusexporter打造定制化devops平台
本文将对RocketMQ-Exporter的设计实现做一个简单的介绍,读者可以通过本文了解到RocketMQ-Exporter的实现过程,以及通过RocketMQ-Exporter来搭建自己的RocketMQ监控系统。该项目的git地址https://github.com/apache/rocketmq-exporter文章主要内容包含以... 查看详情
activemq应用场景-0
...用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ二、消息队列应用场景以下介绍消息队列在实际 查看详情
消息队列使用场景?
...用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ二、消息队列应用场景以下介绍消息队列在实际应用中常用的使用场景。异步处理,应用解耦,流量削锋和消息通讯四个场景2.1异步处理场景说明:用户注册后,需... 查看详情
消息队列常见的5个应用场景
...用较多的消息队列有ActiveMQ、RabbitMQ、ZeroMQ、Kafka、MetaMQ、RocketMQ。二、消息队列应用场景以下介绍消息队列在实际应用中常用的使用场景:异步处理,应用解耦,流量削锋和消息通讯四个场景。1、异步处理场景说明:用户注册后... 查看详情
kubesphere简介,功能介绍,优势,架构说明及应用场景
KubeSphere简介,功能介绍,优势,架构说明及应用场景KuberSphere简介1.1功能介绍Kubernetes资源管理微服务治理多租户管理DevOps工程SourcetoImage多维度监控自研多租户告警系统日志查询与收集应用管理与编排基础设施管理多... 查看详情
rocketmq与kafka的区别
...性不满足。因此,阿里中间件团队基于Java重新编写了RocketMQ,定位于不仅限于日志场景的可靠消息传输。目前,RocketMQ在阿里集团被广泛应用于订单、充值、交易、流计算、消息推送、日志流式处理、binlog分发等场景... 查看详情