RocketMQ 入门实战(2)--安装

这篇具有很好参考价值的文章主要介绍了RocketMQ 入门实战(2)--安装。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文主要介绍 RocketMQ 的安装部署,文中所使用到的软件版本:RocketMQ 5.1.3、CentOS 7.9.2009。

1、RocketMQ 部署模型

RocketMQ 入门实战(2)--安装

1.1、部署模型说明

Apache RocketMQ 部署架构上主要分为四部分:

A、生产者 Producer

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

B、消费者 Consumer

消息消费的角色。

C、名字服务器 NameServer

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

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

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

D、代理服务器 Broker

Broker 主要负责消息的存储、投递和查询以及服务高可用保证。NameServer 几乎无状态节点,因此可集群部署,节点之间无任何信息同步。Broker 部署相对复杂。

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

1.2、部署模型小结

A、每个 Broker 与 NameServer 集群中的所有节点建立长连接,定时注册 Topic 信息到所有 NameServer。
B、Producer 与 NameServer 集群中的其中一个节点建立长连接,定期从 NameServer 获取 Topic 路由信息,并向提供 Topic 服务的 Master 建立长连接,且定时向 Master 发送心跳。Producer 完全无状态。
C、Consumer 与 NameServer 集群中的其中一个节点建立长连接,定期从 NameServer 获取 Topic 路由信息,并向提供 Topic 服务的 Master、Slave 建立长连接,且定时向 Master、Slave 发送心跳。Consumer 既可以从 Master 订阅消息,也可以从 Slave 订阅消息。

1.3、proxy 组件

5.0 版本新增了 proxy 组件,部署时根据实际诉求可以分为 Local 模式和 Cluster 模式,一般情况下如果没有特殊需求,或者遵循从早期版本平滑升级的思路,可以选用

在 Local 模式下,Broker 和 Proxy 是同进程部署,只是在原有 Broker 的配置基础上新增 Proxy 的简易配置就可以运行。
在 Cluster 模式下,Broker 和 Proxy 分别部署,即在原有的集群基础上,额外再部署 Proxy 即可。

2、RocketMQ 部署

2.1、下载部署包

从官网(https://rocketmq.apache.org/zh/download)下载部署包并解压:

unzip rocketmq-all-5.1.3-bin-release.zip

2.2、集群规划

假设在 10.49.196.30、10.49.196.31、10.49.196.32、10.49.196.33 四台机器上按各种模式安装 RocketMQ。

2.3、Local 模式部署

由于 Local 模式下 Proxy 和 Broker 是同进程部署,Proxy 本身无状态,因此主要的集群配置仍然以 Broker 为基础进行即可。

2.3.1、单组节点单副本模式

A、启动 NameServer

nohup bin/mqnamesrv &

tail -f ~/logs/rocketmqlogs/namesrv.log #查看日志

B、启动 Broker + Proxy

nohup bin/mqbroker -n localhost:9876 --enable-proxy &

tail -f ~/logs/rocketmqlogs/broker_default.log #查看日志

注意:这种方式风险较大,因为 Broker 只有一个节点,一旦 Broker 重启或者宕机时,会导致整个服务不可用。不建议线上环境使用, 可以用于本地测试。

2.3.2、多组节点(集群)单副本模式

一个集群内全部部署 Master 角色,不部署 Slave 副本,例如 2 个 Master 或者 3 个 Master,这种模式的优缺点如下:
优点:配置简单,单个 Master 宕机或重启维护对应用无影响,在磁盘配置为 RAID10 时,即使机器宕机不可恢复情况下,由于 RAID10 磁盘非常可靠,消息也不会丢(异步刷盘丢失少量消息,同步刷盘一条不丢),性能最高;
缺点:单台机器宕机期间,这台机器上未被消费的消息在机器恢复之前不可订阅,消息实时性会受到影响。

A、启动 NameServer

在 10.49.196.30、10.49.196.31、10.49.196.32 三台机器上分别启动 NameServer。

nohup bin/mqnamesrv &

B、启动 Broker + Proxy 集群

在 10.49.196.30 上启动第一个 Master:

nohup bin/mqbroker -n '10.49.196.30:9876;10.49.196.31:9876;10.49.196.32:9876' -c $ROCKETMQ_HOME/conf/2m-noslave/broker-a.properties --enable-proxy &

在 10.49.196.31 上启动第二个 Master:

nohup bin/mqbroker -n '10.49.196.30:9876;10.49.196.31:9876;10.49.196.32:9876' -c $ROCKETMQ_HOME/conf/2m-noslave/broker-b.properties --enable-proxy &

2.3.3、多节点(集群)多副本模式-异步复制

每个 Master 配置一个 Slave,有多组 Master-Slave,HA 采用异步复制方式,主备有短暂消息延迟(毫秒级),这种模式的优缺点如下:

优点:即使磁盘损坏,消息丢失的非常少,且消息实时性不会受影响,同时 Master 宕机后,消费者仍然可以从 Slave 消费,而且此过程对应用透明,不需要人工干预,性能同多 Master 模式几乎一样;
缺点:Master 宕机,磁盘损坏情况下会丢失少量消息。

A、启动 NameServer

在 10.49.196.30、10.49.196.31、10.49.196.32 三台机器上分别启动 NameServer。

nohup bin/mqnamesrv &

B、启动 Broker + Proxy 集群

在 10.49.196.30 上启动第一个 Master:

nohup bin/mqbroker -n '10.49.196.30:9876;10.49.196.31:9876;10.49.196.32:9876' -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-a.properties --enable-proxy &

在 10.49.196.31 上启动第二个 Master:

nohup bin/mqbroker -n '10.49.196.30:9876;10.49.196.31:9876;10.49.196.32:9876' -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-b.properties --enable-proxy &

在 10.49.196.32 上启动第一个 Slave:

nohup bin/mqbroker -n '10.49.196.30:9876;10.49.196.31:9876;10.49.196.32:9876' -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-a-s.properties --enable-proxy &

在 10.49.196.33 上启动第二个 Slave:

nohup bin/mqbroker -n '10.49.196.30:9876;10.49.196.31:9876;10.49.196.32:9876' -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-b-s.properties --enable-proxy &

2.3.4、多节点(集群)多副本模式-同步双写

每个 Master 配置一个 Slave,有多对 Master-Slave,HA 采用同步双写方式,即只有主备都写成功,才向应用返回成功,这种模式的优缺点如下:

优点:数据与服务都无单点故障,Master 宕机情况下,消息无延迟,服务可用性与数据可用性都非常高;
缺点:性能比异步复制模式略低(大约低10%左右),发送单个消息的 RT 会略高,且目前版本在主节点宕机后,备机不能自动切换为主机。

A、启动 NameServer

在 10.49.196.30、10.49.196.31、10.49.196.32 三台机器上分别启动 NameServer。

nohup bin/mqnamesrv &

B、启动 Broker + Proxy 集群

在 10.49.196.30 上启动第一个 Master:

nohup bin/mqbroker -n '10.49.196.30:9876;10.49.196.31:9876;10.49.196.32:9876' -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-a.properties --enable-proxy &

在 10.49.196.31 上启动第二个 Master:

nohup bin/mqbroker -n '10.49.196.30:9876;10.49.196.31:9876;10.49.196.32:9876' -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-b.properties --enable-proxy &

在 10.49.196.32 上启动第一个 Slave:

nohup bin/mqbroker -n '10.49.196.30:9876;10.49.196.31:9876;10.49.196.32:9876' -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-a-s.properties --enable-proxy &

在 10.49.196.33 上启动第二个 Slave:

nohup bin/mqbroker -n '10.49.196.30:9876;10.49.196.31:9876;10.49.196.32:9876' -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-b-s.properties --enable-proxy &

 文章来源地址https://www.toymoban.com/news/detail-691635.html

注:以上 Broker 与 Slave 配对是通过指定相同的 BrokerName 参数来配对,Master 的 BrokerId 必须是 0,Slave 的 BrokerId 必须是大于 0 的数。另外一个 Master 下面可以挂载多个 Slave,同一 Master 下的多个 Slave 通过指定不同的 BrokerId 来区分。

2.4、Cluster 模式部署

在 Cluster 模式下,Broker 与 Proxy 分别部署(Broker 启动时不要添加 --enable-proxy 参数),可以在 NameServer和 Broker 都启动完成之后再部署 Proxy。
在 Cluster 模式下,一个 Proxy 集群和 Broker 集群为一一对应的关系,可以在 Proxy 的配置文件 rmq-proxy.json 中使用 rocketMQClusterName 进行配置。
这里以 Broker 的“多节点(集群)多副本模式-同步双写” 模式为例来部署 RocketMQ。

2.4.1、启动 NameServer

在 10.49.196.30、10.49.196.31、10.49.196.32 三台机器上分别启动 NameServer。

nohup bin/mqnamesrv &

2.4.2、启动 Broker

在 10.49.196.30 上启动第一个 Master:

nohup bin/mqbroker -n '10.49.196.30:9876;10.49.196.31:9876;10.49.196.32:9876' -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-a.properties &

在 10.49.196.31 上启动第二个 Master:

nohup bin/mqbroker -n '10.49.196.30:9876;10.49.196.31:9876;10.49.196.32:9876' -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-b.properties &

在 10.49.196.32 上启动第一个 Slave:

nohup bin/mqbroker -n '10.49.196.30:9876;10.49.196.31:9876;10.49.196.32:9876' -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-a-s.properties &

在 10.49.196.33 上启动第二个 Slave:

nohup bin/mqbroker -n '10.49.196.30:9876;10.49.196.31:9876;10.49.196.32:9876' -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-b-s.properties &

2.4.3、启动 Proxy

在 10.49.196.30、10.49.196.31、10.49.196.32 三台机器上分别启动 Proxy。

nohup bin/mqproxy -n '10.49.196.30:9876;10.49.196.31:9876;10.49.196.32:9876' &

3、Broker 参数说明

参数名 默认值 说明
listenPort 10911 接受客户端连接的监听端口
namesrvAddr null nameServer 地址
brokerIP1 网卡的 InetAddress 当前 broker 监听的 IP
brokerIP2 跟 brokerIP1 一样 存在主从 broker 时,如果在 broker 主节点上配置了 brokerIP2 属性,broker 从节点会连接主节点配置的 brokerIP2 进行同步
brokerName null broker 的名称
brokerClusterName DefaultCluster 本 broker 所属的 Cluser 名称
brokerId 0 broker id, 0 表示 master, 其他的正整数表示 slave
storePathCommitLog $HOME/store/commitlog/ 存储 commit log 的路径
storePathConsumerQueue $HOME/store/consumequeue/ 存储 consume queue 的路径
mapedFileSizeCommitLog 1024 * 1024 * 1024(1G) commit log 的映射文件大小
deleteWhen 04 在每天的什么时间删除已经超过文件保留时间的 commit log
fileReservedTime 72 以小时计算的文件保留时间
brokerRole ASYNC_MASTER SYNC_MASTER/ASYNC_MASTER/SLAVE
flushDiskType ASYNC_FLUSH SYNC_FLUSH/ASYNC_FLUSH SYNC_FLUSH 模式下的 broker 保证在收到确认生产者之前将消息刷盘。ASYNC_FLUSH 模式下的 broker 则利用刷盘一组消息的模式,可以取得更好的性能。

4、RocketMQ Dashboard 部署

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

4.1、下载源码并编译

源码地址:apache/rocketmq-dashboard,下载并解压,切换至源码目录 rocketmq-dashboard-master:

mvn clean package -Dmaven.test.skip=true

4.2、运行

RocketMQ Dashboard 默认的端口为 8080,与 Proxy 端口冲突,可以修改其运行端口:

java -Dserver.port=18080 -jar target/rocketmq-dashboard-1.0.1-SNAPSHOT.jar

效果如下:

RocketMQ 入门实战(2)--安装

 

 

参考:https://rocketmq.apache.org/zh/docs/deploymentOperations/01deploy

 

到了这里,关于RocketMQ 入门实战(2)--安装的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【ROS2机器人入门到实战】Nav2导航框架介绍与安装

    当前平台文章汇总地址:ROS2机器人从入门到实战 获取完整教程及配套资料代码,请关注公众号鱼香ROS获取 教程配套机器人开发平台:两驱版| 四驱版 为方便交流,搭建了机器人技术问答社区:地址 fishros.org.cn 上一节我们对机器人导航过程中所用到的2D地图进行了介绍,本节

    2024年02月04日
    浏览(27)
  • Docker(二)安装指南:主要介绍在 Linux 、Windows 10 和 macOS 上的安装

    作者主页: 正函数的个人主页 文章收录专栏: Docker 欢迎大家点赞 👍 收藏 ⭐ 加关注哦! Docker 分为 stable test 和 nightly 三个更新频道。 官方网站上有各种环境下的 安装指南,这里主要介绍 Docker 在 Linux 、 Windows 10 和 macOS 上的安装。 警告:切勿在没有配置 Docker APT 源的情况

    2024年01月20日
    浏览(47)
  • 【RocketMQ入门-安装部署与Java API测试】

    虚拟机VWMare:安装centos7.6操作系统 源码包:rocketmq-all-5.1.3-source-release.zip 单master部署,在一台虚拟机上安装部署name server和proxy以及broker 流程图: 源码包安装需要事先安装部署maven,下载apache-maven-3.6.3-bin.tar.gz安装包,然后解压并配置环境变量,如下命令: 配置环境变量(此

    2024年02月13日
    浏览(20)
  • [RocketMQ] Consumer消费者启动主要流程源码 (六)

    客户端常用的消费者类是DefaultMQPushConsumer, DefaultMQPushConsumer的构造器以及start方法的源码。 1.创建DefaultMQPushConsumer实例 最终都是调用下面四个参数的构造函数: 指定了命名空间、生产者组、RPC钩子和消费者之间消息分配的策略算法的构造器, 创建了一个DefaultMQPushConsumerImpl实例

    2024年02月16日
    浏览(36)
  • RocketMQ的windos/linux/docker超详细安装及简单入门!

    本文若有不当之处欢迎提出pr/issue 主要内容: 初识MQ RocketMQ简介 RocketMQ安装 RocketMQ快速入门 SpringBoot集成RocketMQ 最后 1.1.同步和异步通讯 微服务间通讯有同步和异步两种方式: 同步通讯:就像打电话,需要实时响应。 异步通讯:就像发邮件,不需要马上回复。 两种方式各有

    2024年02月03日
    浏览(25)
  • ElasticSearch入门介绍和实战

    目录 1.ElasticSearch简介 1.1 ElasticSearch(简称ES) 1.2 ElasticSearch与Lucene的关系 1.3 哪些公司在使用Elasticsearch 1.4 ES vs Solr比较 1.4.1 ES vs Solr 检索速度 2.  Lucene全文检索框架 2.1  什么是全文检索 2.2 分词原理之倒排索引 3.  Elasticsearch中的核心概念 3.1  索引 index 3.2  映射 mapping 3.3  字

    2024年02月03日
    浏览(23)
  • 数据仓库入门介绍框架(附带完整项目实战)

    一、诞生背景 企业数据分析需要:各个部门自己建立独立的数据抽取系统,导致数据不一致 概述 数据仓库是一个面向主题的、集成、非易失的且随时间变化的数据集合 主要用于组织积累的历史数据,并使用分析方法(OLAP、数据分析)进行分析整理辅助决策,为管理者、企

    2024年01月18日
    浏览(29)
  • 【项目实战】ES的索引模式入门介绍

    在ES中,索引是指一组具有相似特征的文档的集合,可以将其看作是数据库中的表。 索引模式是指定义索引中文档的结构和属性的过程,类似于数据库中的表结构定义。 在ES中,索引模式是以JSON格式定义的,包含了文档的字段、类型、分析器等信息。 索引模式的设计对于E

    2024年02月07日
    浏览(26)
  • 《JavaCV从入门到实战教程合集》介绍和目录

    《JavaCV音视频合集》是《JavaCV入门指南》、《JavaCV开发详解》、《JavaCV进阶之FFmpeg》和2022年《JavaCV音视频开发宝典》四合一汇总合集,完整包含《JavaCV入门指南》、《JavaCV开发详解》、《JavaCV进阶之FFmpeg》和《JavaCV音视频开发宝典》系列所有付费内容。 《JavaCV入门指南》 《

    2023年04月11日
    浏览(30)
  • 零入门kubernetes网络实战-27->虚拟网桥bridge介绍

    《零入门kubernetes网络实战》视频专栏地址 https://www.ixigua.com/7193641905282875942 本篇文章视频地址(稍后上传) 1、网桥简介 bridge是一个虚拟网络交换机,具有网络设备的特性(可以配置IP、MAC地址等);跟物理交换机功能类似。 可以对以太网帧进行转发。 bridge有多个端口,数据可

    2023年04月09日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包