当前位置:   article > 正文

RocketMQ入坑指南(一):RocketMQ的基础知识和启动流程_rocketmq开发指南

rocketmq开发指南

前言

消息中间件是我们平时在系统开发中比较常用的中间件之一,准备开一个RocketMQ的教程系列,大家有想要学习的可以关注一下!

一、RocketMQ简介

Apache RocketMQ(Rocket Message Queue)是一个开源的、分布式的消息中间件系统。它最初是由阿里巴巴集团开发和开源的,后来成为了Apache软件基金会的顶级项目之一。RocketMQ旨在提供可靠、快速、可扩展的消息传递服务,适用于大规模分布式系统中的消息通信。

RocketMQ有很多优秀的特性,在可用性方面,RocketMQ强调集群无单点,任意一点高可用,客户端具备负载均衡能力,可以轻松实现水平扩容;在性能方面,在天猫双11大促背后的亿级消息处理就是通过RocketMQ提供的保障;在API方面,提供了丰富的功能,可以实现异步消息、同步消息、顺序消息、事务消息等丰富的功能,能满足大多数应用场景;在可靠性方面,提供了消息持久化、失败重试机制、消息查询追溯的功能,进一步为可靠性提供保障。

下面我们就进入学习,首先要先了解RocketMQ中的几个概念:

二、重要概念

RocketMQ的基础模型,一个简单的Pub/Sub模型

上图就是一个基本的消息系统模型,包括生产者 (Producer)消费者 (Consumer),中间进行基于消息主题(Topic)的消息传送。

RocketMQ扩展后的消息模型

生产者组Producer Group:一个逻辑概念,在使用生产者实例的时候需要指定一个组名。一个生产者组可以生产多个Topic的消息。

生产者实例Producer:一个生产者组部署了多个进程,每个进程都可以称为一个生产者实例。

主题Topic:一个Topic代表消息的大类,比如“财政数据”Topic、“商城订单”Topic,一个Topic下可以拥有多个队列Queue

标签Tag:二级分类,对topic的进一步细化,用于区分同一个主题下的不同业务的消息,例如:“财政数据”的Tag可以有“计划”、“指标”、“支付”,“商城订单”的Tag可以有“线上订单”、“线下订单”...。

消息Message:具体的数据消息,每个message必须指定Topic

队列Queue:Queue就是消息队列的物理通信通道,消息采用FIFO(先进先出)模式传输,负责向消费者Push(推送)数据,或者由消费者直接Pull(拉取)

消费者组Consumer Group:一个逻辑概念,在使用消费者时需要指定一个组名。一个消费者组可以订阅多个Topic。

消费者实例Consumer:一个消费者组程序部署了多个进程,每个进程都可以称为一个消费者实例。

三、RocketMQ部署模型

首先,我们要先了解一下部署模型

从官网的模型图中,我们可以看到部署架构上主要分为四部分:

命名服务器 NameServer

NameServer是一个简单的 Topic 路由注册中心,支持 Topic、Broker 的动态注册与发现。

主要包括两个功能:

  • Broker管理,NameServer接受Broker集群的注册信息并且保存下来作为路由信息的基本数据。然后提供心跳检测机制,检查Broker是否还存活;
  • 路由信息管理,每个NameServer将保存关于 Broker 集群的整个路由信息和用于客户端查询的队列信息。Producer和Consumer通过NameServer就可以知道整个Broker集群的路由信息,从而进行消息的投递和消费。

NameServer通常会有多个实例部署,各实例间相互不进行信息通讯。Broker是向每一台NameServer注册自己的路由信息,所以每一个NameServer实例上面都保存一份完整的路由信息。当某个NameServer因某种原因下线了,客户端仍然可以向其它NameServer获取路由信息。

代理服务器 Broker

Broker主要负责消息的存储、投递和查询以及服务高可用保证。

NameServer几乎无状态节点,因此可集群部署,节点之间无任何信息同步。Broker部署相对复杂。

在 Master-Slave 架构中,Broker 分为 Master 与 Slave。一个Master可以对应多个Slave,但是一个Slave只能对应一个Master。Master 与 Slave 的对应关系通过指定相同的BrokerName,不同的BrokerId 来定义,BrokerId为0表示Master,非0表示Slave。Master也可以部署多个。

生产者 Producer

发布消息的角色。Producer通过 MQ 的负载均衡模块选择相应的 Broker 集群队列进行消息投递,投递的过程支持快速失败和重试。

消费者 Consumer

消息消费的角色。

  • 支持以推(push),拉(pull)两种模式对消息进行消费。
  • 同时也支持集群方式和广播方式的消费。
  • 提供实时消息订阅机制,可以满足大多数用户的需求。

四、Rocket单Master启动

刚开始学习的话,先采取单Master方式,比较简单方便,教程采用的是windows系统

1.下载RocketMQ

下载 | RocketMQ

讲解采用的是4.9.4版本的RocketMQ

2.配置环境变量

设置环境变量ROCKETMQ_HOME

3.启动命名服务器

打开bin目录,找到mqnamesrv.cmd,双击启动,看到以下信息说明启动成功

4.启动broker

首先,我们进入conf文件夹下面,可以看到broker.conf配置文件,打开进行bro设置

  1. # 集群名称 同一个集群下的broker要相同
  2. brokerClusterName = DefaultCluster
  3. # broker名称
  4. brokerName = broker-a
  5. # 0代表主节点 大于0代表从节点
  6. brokerId = 0
  7. # 删除日志文件,默认4点
  8. deleteWhen = 04
  9. # 日志文件保留时间 默认48小时
  10. fileReservedTime = 48
  11. #- ASYNC_MASTER 异步复制Master
  12. #- SYNC_MASTER 同步双写Master
  13. brokerRole = ASYNC_MASTER
  14. #刷盘方式
  15. #- ASYNC_FLUSH 异步刷盘,性能好宕机会丢数
  16. #- SYNC_FLUSH 同步刷盘,性能较差不会丢数
  17. flushDiskType = ASYNC_FLUSH
  18. # NameServer节点列表,使用分号分割
  19. namesrvAddr=127.0.0.1:9876
  20. # 发送消息自动创建Topic,生产环境不推荐
  21. autoCreateTopicEnable = true

大部分参数都是默认的,我们只需要在最后添加namesrvAddr参数,设置你的命名服务器IP和端口号,然后我们进入bin目录启动broker

在目录里打开cmd命令,可以在目录下搜索栏中敲击cmd回车打开

指定刚才我们更改的配置文件,回车,看到以下信息,说明broker启动成功

mqbroker -c D:\work\rocketmq-all-4.9.4-bin-release\conf\broker.conf

注意:

如果出现的信息是找不到或无法加载主类

则我们打开bin目录下的runbroker.cmd,把倒数第二行的CLASSPATH加上引号,不如获取不到路径

  1. set "JAVA_OPT=%JAVA_OPT% -cp %CLASSPATH%"
  2. 改成
  3. set "JAVA_OPT=%JAVA_OPT% -cp "%CLASSPATH%""

这时候我们可以通过mqadmin来查看集群状态

mqadmin clusterList -n 127.0.0.1:9876

可以看到已经有了刚才启动的broker了。

到此,RocketMQ已经启动完毕

五、RocketMQ监控仪表盘

RocketMQ Dashboard 是 RocketMQ 的管控利器,为用户提供客户端和应用程序的各种事件、性能的统计信息,支持以可视化工具代替 Topic 配置、Broker 管理等命令行操作。

源码地址:

https://github.com/apache/rocketmq-dashboard/releases/tag/rocketmq-dashboard-1.0.0

打成Jar包直接执行就可以了,也可以关注公众号程序员的小黑板(末尾有二维码),发送RocketMQ获取下载地址,或者点击下面连接

https://download.csdn.net/download/u014374743/88801190

java -jar rocketmq-dashboard-1.0.0.jar

默认8080端口,访问http://localhost:8080

点击集群,我们就可以看到集群状态

这次的分享就分享到这,主要介绍了RocketMQ的基础知识和部署方式。

接下来将分享Java如何使用RocketMQ

关注我,不迷路

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/712856
推荐阅读
相关标签
  

闽ICP备14008679号