RocketMQ快速实战以及集群架构详解

news/2024/5/4 5:08:53
⼀、 MQ 简介
MQ MessageQueue ,消息队列。是在互联⽹中使⽤⾮常⼴泛的⼀系列服务中间件。 这个词可以分两个部分来看,⼀是Message :消息。消息是在不同进程之间传递的数据。这些进程可以部署在同⼀台机器上,也可以分布在不同机器上。⼆是Queue :队列。队列原意是指⼀种具有 FIFO( 先进先出 ) 特性的数据结构,是⽤来缓存数据的。对于消息中间件产品来说,能不能保证FIFO 特性,尚值得考量。但是,所有消息队列都是需要具备存储消息,让消息排队的能⼒。
⼴义上来说,只要能够实现消息跨进程传输以及队列数据缓存,就可以称之为消息队列。例如我们常⽤的 QQ 、微信、阿⾥旺旺等就都具备了这样的功能。只不过他们对接的使⽤对象是⼈,⽽我们这⾥讨论的MQ 产品需要对接的使⽤对象是应⽤程序。
MQ 的作⽤主要有以下三个⽅⾯:
异步
例⼦:快递员发快递,直接到客户家效率会很低。引⼊菜⻦驿站后,快递员只需要把快递放到菜⻦驿站,就可以继续发其他快递去了。客户再按⾃⼰的时间安排去菜⻦驿站取快递。
作⽤:异步能提⾼系统的响应速度、吞吐量。
· 解耦
例⼦:《 Thinking in JAVA 》很经典,但是都是英⽂,我们看不懂,所以需要编辑社,将⽂章翻译成其他语⾔,这样就可以完成英语与其他语⾔的交流。
作⽤:
1 、服务之间进⾏解耦,才可以减少服务之间的影响。提⾼系统整体的稳定性以及可扩展性。
2 、另外,解耦后可以实现数据分发。⽣产者发送⼀个消息后,可以由⼀个或者多个消费者进⾏消费,并且消费者的增加或者减少对⽣产者没有影响。
· 削峰
例⼦:⻓江每年都会涨⽔,但是下游出⽔⼝的速度是基本稳定的,所以会涨⽔。引⼊三峡⼤坝后,可以把⽔储存起来,下游慢慢排⽔。
作⽤:以稳定的系统资源应对突发的流量冲击。
⼆、 RocketMQ 产品特点
1 RocketMQ 介绍
RocketMQ 是阿⾥巴巴开源的⼀个消息中间件,在阿⾥内部历经了双⼗⼀等很多⾼并发场景的考验,能够处理亿万级别的消息。2016 年开源后捐赠给 Apache ,现在是 Apache 的⼀个顶级项⽬。
早期阿⾥使⽤ ActiveMQ ,但是,当消息开始逐渐增多后, ActiveMQ IO 性能很快达到了瓶颈。于是,阿⾥开始关注Kafka 。但是 Kafka 是针对⽇志收集场景设计的,他的⾼级功能并不是很贴合阿⾥的业务场景。尤其当他的Topic过多时,由于 Partition ⽂件也会过多,这就会加⼤⽂件索引的耗时,会严重影响 IO 性能。于是阿⾥才决定⾃研中间件,最早叫做MetaQ ,后来改名成为 RocketMQ 。最早他所希望解决的最⼤问题就是多 Topic 下的 IO 性能压⼒。但是产品在阿⾥内部的不断改进,RocketMQ 开始体现出⼀些不⼀样的优势。
2 RocketMQ 特点
当今互联⽹ MQ 产品众多,其中,影响⼒和使⽤范围最⼤的当数 Apache Kafka RabbitMQ Apache RocketMQ以及Apache Plusar 。这⼏⼤产品虽然都是典型的 MQ 产品,但是由于设计和实现上的⼀些差异,造成他们适合于不同的细分场景。
其中 RocketMQ ,孵化⾃阿⾥巴巴。历经阿⾥多年双⼗⼀的严格考验, RocketMQ 可以说是从全世界最严苛的⾼并发场景中摸爬滚打出来的过硬产品,也是少数⼏个在⾦融场景⽐较适⽤的MQ 产品。从横向对⽐来看,RocketMQ与 Kafka RabbitMQ 相⽐。 RocketMQ 的消息吞吐量虽然和 Kafka 相⽐还是稍有差距,但是却⽐RabbitMQ⾼很多。在阿⾥内部, RocketMQ 集群每天处理的请求数超过 5 万亿次,⽀持的核⼼应⽤超过 3000 个。⽽RocketMQ 最⼤的优势就是他天⽣就为⾦融互联⽹⽽⽣。他的消息可靠性相⽐ Kafka 也有了很⼤的提升,⽽消息吞吐量相⽐RabbitMQ 也有很⼤的提升。另外, RocketMQ 的⾼级功能也越来越全⾯,⼴播消费、延迟队列、死信队列等等⾼级功能⼀应俱全,甚⾄某些业务功能⽐如事务消息,已经呈现出领先潮流的趋势。
三、 RocketMQ 快速实战
1 、快速搭建 RocketMQ 服务
RocketMQ 的官⽹地址: http://rocketmq.apache.org 。在下载⻚⾯可以获取 RocketMQ 的源码包以及运⾏包。下载⻚⾯地址: https://rocketmq.apache.org/download
当前最新的版本是 5.x ,这是⼀个着眼于云原⽣的新版本,给 RocketMQ 带来了⾮常多很亮眼的新特性。但是⽬前来看,企业中⽤得还⽐较少。因此,我们这⾥采⽤的还是更为稳定的4.9.5 版本。
运⾏只需要下载 Binary 运⾏版本就可以了。 当然,源码包也建议下载下来,后续会进⾏解读。运⾏包下载下来后,就可以直接解压,上传到服务器上。我们这⾥会上传到/app/rocketmq ⽬录。解压后⼏个重要的⽬录如下 :
接下来, RocketMQ 建议的运⾏环境需要⾄少 12G 的内存,这是⽣产环境⽐较理想的资源配置。但是,学习阶段,如果你的服务器没有这么⼤的内存空间,那么就需要做⼀下调整。进⼊bin ⽬录,对其中的 runserver.sh 和runbroker.sh两个脚本进⾏⼀下修改。
使⽤ vi runserver.sh 指令,编辑这个脚本,找到下⾯的⼀⾏配置,调整 Java 进程的内存⼤⼩。
接下来,同样调整 runbroker.sh 中的内存⼤⼩。
调整完成后,就可以启动 RocketMQ 服务了。 RocketMQ 服务基于 Java 开发,所以需要提前安装 JDK JDK 建议采⽤1.8 版本即可。
RocketMQ 的后端服务分为 nameserver broker 两个服务,关于他们的作⽤,后⾯会给你分享。接下来我们先将这两个服务启动起来。
第⼀步:启动 nameserver 服务。
指令执⾏后,会⽣成⼀个 nohup.out 的⽇志⽂件。在这个⽇志⽂件⾥如果看到下⾯这⼀条关键⽇志,就表示nameserver服务启动成功了。
接下来,可以通过 jsp 指令进⾏验证。使⽤ jps 指令后,可以看到有⼀个 NamesrvStartup 的进程运⾏,也表示nameserver服务启动完成。
第⼆步:启动 broker 服务。
启动 broker 服务之前,要做⼀个⼩⼩的配置。进⼊ RocketMQ 安装⽬录下的 conf ⽬录,修改 broker.conf ⽂件,在⽂件最后⾯加⼊⼀个配置:
然后也可以⽤之前的⽅式启动 broker 服务。启动 broker 服务的指令是 mqbroker
启动完成后,同样检查 nohup.out ⽇志⽂件,有如下⼀条关键⽇志,就表示 broker 服务启动正常了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.tangninghui.cn.cn/item-216.htm

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

grafana结合Skywalking追踪Trace(一)

SW应用中对Trace的跟踪一直占有重要的地位,即可以用户指定的tag值,可以筛选出感兴趣的trace(跟踪链),用户可以通过跟踪链追踪各个Span的详细情况。 但是在使用SW OAP原生页面中会存在两个问题: 1) Trace数量太多了&…

RocketMQ 发送顺序消息

文章目录 顺序消息应用场景消息组(MessageGroup)顺序性生产的顺序性MQ 存储的顺序性消费的顺序性 rocketmq-client-java 示例(gRPC 协议)1. 创建 FIFO 主题生产者代码消费者代码解决办法解决后执行结果 rocketmq-client 示例&…

郑州大学图书馆许少辉《乡村振兴战略下传统村落文化旅游设计》中文文献——2023学生开学季辉少许

郑州大学图书馆许少辉《乡村振兴战略下传统村落文化旅游设计》中文文献——2023学生开学季辉少许

elk日志某个时间节点突然搜索不到了

elk日志某个时间节点突然搜索不到了,检查filebeat正常 Kibana手动上传数据: 响应: Error: Validation Failed: 1: this action would add [2] total shards, but this cluster currently has [2000]/[2000] maximum shards open 原因:ElasticSearch总分片数量导致的异常,ES…

【基于MBD开发模式的matlab持续集成(一)】

基于MBD开发模式的matlab持续集成 引言 或许是感受到行业内卷的愈加激烈,在传统制造和高新技术相结合的新能源领域对软件工程开发的要求也愈加提高,尤其在互联网已经大行 其道的敏捷开发,便顺其自然的被新能源的老板们所看重。 概述 本文…

关于若依(ruoyi)前端,f12跟踪失效的问题处理

1、根据作者反馈,使用了vite-plugin-vue-setup-extend该插件; 2、参考作者指导,我采用了去掉这个插件的方法; 具体操作: (1)找到package.json,去掉该插件; (2&#xff…