Docker安装部署单机版Rocket及基础讲解

目录
  • 前言
  • 优缺点
  • 常见名词介绍
  • 单机版安装部署
  • 集群部署
  • 四种集群部署方式
  • 集群部署

前言

目前主流的MQ主要是Rocketmq、kafka、Rabbitmq,Rocketmq相比于Rabbitmq、kafka具有主要优势特性有:

  1. 支持事务消息(能够解决分布式事务的问题)
  2. 支持顺序消息(底层已经使用内存队列实现)
  3. 支持consumer端tag过滤,减少不必要的网络传输

Rocketmq就是对kafka实现的升级版本。

优缺点

RocketMQ 优点

  • 单机吞吐量:十万级
  • 可用性:非常高,分布式架构
  • 消息可靠性:经过参数优化配置,消息可以做到 0 丢失
  • 功能支持:MQ 功能较为完善,还是分布式的,扩展性好
  • 支持 10 亿级别的消息堆积,不会因为堆积导致性能下降
  • 源码是 Java,方便结合公司自己的业务进行二次开发
  • 天生为金融互联网领域而生,对于可靠性要求很高的场景,尤其是电商里面的订单扣款,以及业务削峰,在大量交易涌入时,后端可能无法及时处理的情况
  • RoketMQ 在稳定性上可能更值得信赖,这些业务场景在阿里双11已经经历了多次考验

RocketMQ 缺点

  • 支持的客户端语言不多,目前仅支持 Java 及 C++,而且 C++ 还不成熟
  • 没有在 MQ 核心中去实现 JMS 等接口,有些系统要迁移需要修改大量代码

常见名词介绍

  • provider

消息生产者,位于用户的进程内,Producer通过NameServer获取所有Broker的路由信息,根据负载均衡策略选择将消息发到哪个Broker,然后调用Broker接口提交消息。

  • provider group

生产者组,简单来说就是多个发送同一类消息的生产者称之为一个生产者组。

  • consumer

消息消费者,位于用户进程内。Consumer通过NameServer获取所有broker的路由信息后,向Broker发送Pull请求来获取消息数据。Consumer可以以两种模式启动,广播(Broadcast)和集群(Cluster),广播模式下,一条消息会发送给所有Consumer,集群模式下消息只会发送给一个Consumer。

  • consumer group

消费者组,和生产者类似,消费同一类消息的多个 Consumer 实例组成一个消费者组。

  • Topic Topic

用于将消息按主题做划分,Producer将消息发往指定的Topic,Consumer订阅该Topic就可以收到这条消息。Topic跟发送方和消费方都没有强关联关系,发送方可以同时往多个Topic投放消息,消费方也可以订阅多个Topic的消息。在RocketMQ中,Topic是一个上逻辑概念。消息存储不会按Topic分开。

  • Message

代表一条消息,使用MessageId唯一识别,用户在发送时可以设置messageKey,便于之后查询和跟踪。一个 Message 必须指定 Topic,相当于寄信的地址。Message 还有一个可选的 Tag 设置,以便消费端可以基于 Tag 进行过滤消息。也可以添加额外的键值对,例如你需要一个业务 key 来查找 Broker 上的消息,方便在开发过程中诊断问题。

  • Tag 标签

可以被认为是对 Topic 进一步细化。一般在相同业务模块中通过引入标签来标记不同用途的消息。

  • Broker Broker

是RocketMQ的核心模块,负责接收并存储消息,同时提供Push/Pull接口来将消息发送给Consumer。Consumer可选择从Master或者Slave读取数据。多个主/从组成Broker集群,集群内的Master节点之间不做数据交互。Broker同时提供消息查询的功能,可以通过MessageID和MessageKey来查询消息。Borker会将自己的Topic配置信息实时同步到NameServer。

  • Queue Topic

Queue Topic和Queue是1对多的关系,一个Topic下可以包含多个Queue,主要用于负载均衡。发送消息时,用户只指定Topic,Producer会根据Topic的路由信息选择具体发到哪个Queue上。Consumer订阅消息时,会根据负载均衡策略决定订阅哪些Queue的消息。

  • Offset

是RocketMQ在存储消息时会为每个Topic下的每个Queue生成一个消息的索引文件,每个Queue都对应一个Offset记录当前Queue中消息条数。

  • NameServer

NameServer可以看作是RocketMQ的注册中心,它管理两部分数据:集群的Topic-Queue的路由配置;Broker的实时配置信息。其它模块通过Nameserver提供的接口获取最新的Topic配置和路由信息。

  • Producer/Consumer

通过查询接口获取Topic对应的Broker的地址信息

  • Broker

注册配置信息到NameServer, 实时更新Topic信息到NameServer

单机版安装部署

这里用作学习使用,所以使用docker安装,安装速度快。

1、安装启动nameserver服务

docker run -d -p 9876:9876 -v /opt/rocketmq/data/namesrv/logs:/root/logs -v /opt/rocketmq/data/namesrv/store:/root/store --name rmqnamesrv -e "MAX_POSSIBLE_HEAP=100000000" rocketmqinc/rocketmq sh mqnamesrv

2、安装启动broker服务

根据容器卷配置,在指定位置添加broker.conf内容 /opt/rocketmq/conf/broker.conf 。(可以不需要)

brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
brokerIP1 = docker宿主机IP

启动broker服务

docker run -d -p 10911:10911 -p 10909:10909 -v  /opt/rocketmq/data/broker/logs:/root/logs -v  /opt/rocketmq/rocketmq/data/broker/store:/root/store -v  /opt/rocketmq/conf/broker.conf:/opt/rocketmq/conf/broker.conf --name rmqbroker --link rmqnamesrv:namesrv -e "NAMESRV_ADDR=namesrv:9876" -e "MAX_POSSIBLE_HEAP=200000000" rocketmqinc/rocketmq sh mqbroker -c /opt/rocketmq/conf/broker.conf

3、安装启动控制台

docker run -d -e "JAVA_OPTS=-Drocketmq.config.namesrvAddr=nameserIP:9876 -Drocketmq.config.isVIPChannel=false" -p 8080:8080 --name rmqconsole -t styletang/rocketmq-console-ng

集群部署

集群部署原理图

broker主备

主:

备:同步主节点的数据,当主节点宕机之后,可以从被变为主保证高可用。

在rocketmq中分为多主多从实现对我们topic数据实现分片存储。

四种集群部署方式

  • 单个Master节点, 缺点就是如果宕机之后可能整个服务不可用;
  • 多个Master节点,分摊存放我们的消息,缺点:没有Slave节点,主的Master节点宕机之后消息数据可能会丢失的;
  • 多个Master和Slave节点 采用异步形式 效率非常高 数据可能短暂产生延迟(毫秒级别的)
  • 多个Master和Slave节点 采用同步形式, 效率比较低、数据不会产生延迟。

集群部署

集群的部署主要在于配置文件,nameserver部署好之后,多个broker的配置文件中配置同一个nameserver 集群的连接信息,broker集群就搭建好了。之后 Rocketmq-console 连接其中一个nameserver就可以了。

配置文件说明:

#集群名称,可以区分不同集群,不同的业务可以建多个集群,多个broker的配置文件中的该值必须一样
brokerClusterName=kaico

# Broker 的名称, Master 和Slave 通过使用相同的Broker 名称来表明相互关系,以说明某个Slave 是哪个Master 的Slave 。
brokerName=broker-a
#  一个Master Barker 可以有多个Slave, 0 表示Master ,大于0 表示不同Slave 的ID 。
brokerId=0

#与fileReservedTim巳参数呼应,表明在几点做消息删除动作,默认值04 表示凌晨4 点。
deleteWhen=04
namesrvAddr=mqnameserver1:9876;mqnameserver2:9876
autoCreateTopicEnable=true  #是否自动创建主题(true为允许自动创建集群)
#topic默认创建的队列数
defaultTopicQueueNums=4
#是否允许Broker自动创建订阅组,建议线下开启,线上关闭,默认【true】
autoCreateSubscriptionGroup=true
#Broker 监听的端口号,如果一台机器上启动了多个Broker , 则要设置不同的端口号,避免冲突。
listenPort=10911
brokerIp=192.168.1.1

1、首先启动两个nameserver服务

2、启动多个broker服务(这里安排两个)

第一个broker配置文件

brokerClusterName=kaico  #集群名称
brokerName=broker-a     #broker的名称
brokerId=0              #master节点的标识(0表示是master节点)
namesrvAddr=mqnameserver1:9876;mqnameserver2:9876   #nameServer集群

第二个broker配置文件

brokerClusterName=kaico  #集群名称
brokerName=broker-b     #broker的名称
brokerId=0              #master节点的标识(0表示是master节点)
namesrvAddr=mqnameserver1:9876;mqnameserver2:9876   #nameServer集群

启动方式:

  1. 先启动nameServer服务
  2. 再去启动broker,在启动broker的命令中可以指定nameServer的连接信息。

到此这篇关于Docker安装部署单机版Rocket及基础讲解的文章就介绍到这了,更多相关Docker Rocket内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Docker中RocketMQ的安装与使用详解

    搜索RocketMQ的镜像,可以通过docker的hub.docker.com上进行搜索,也可以在Linux下通过docker的search命令进行搜索,不过最近防火墙升级后,导致国外的网站打开都很慢,通过命令搜索反而会更加方便,操作Docker命令一定要是root用户或者具有root权限的用户.查询操作如下: docker search rocketmq 可以得到如下的结果: 镜像倒是蛮多的,不过看来看去没有一个是官方发布的,我就随便选一个吧,如foxiswho/rocketmq,以下是一个查

  • 使用Docker容器部署rocketmq单机的全过程

    目录 查询镜像 拉取镜像 创建namesrv数据存储路径 构建namesrv容器 创建broker数据存储路径 创建broker配置文件 broker.conf 内容如下: 构建broker容器 构建rocketmq-console-ng 查询镜像 docker search rocketmq NAME DESCRIPTION STARS OFFICIAL AUTOMATED foxiswho/rocketmq rocketmq 69 rocketmqinc/rocketmq Image rep

  • 超详细Docker Desktop下安装rocketmq的教程

    安装Docker Desktop 下载地址:Docker Desktop for Mac and Windows | Docker 确认Docker-compose命令是否可用 docker-compose --version 查看docker镜像 docker search rocketmq 下载镜像 apacherocketmq/rocketmq docker pull apacherocketmq/rocketmq 编写yml文件 docker-compose.yml services:

  • docker安装rocketMQ教程(最详细)

    RocketMQ是一款分布式.队列模型的消息中间件,是由阿里巴巴设计的,具有以下特点: 支持严格的消息顺序 支持Topic与Queue两种模式 亿级消息堆积能力 比较友好的分布式特性 同时支持Push与Pull方式消费消息 历经多次天猫双十一海量消息考验 RocketMQ是纯java编写,基于通信框架Netty. 其实小编就冲着RocketMQ历经多次天猫双十一海量消息考验,就感觉应该选择他了,再加上有亿级消息堆积能力,这么强大的一个部件,一个新生的黑马!接下来带大家在centos7上用dock

  • docker安装rocketMQ和安装过程中出现问题的解决

    目录 拉取rocketmq镜像 创建namesrv 创建单个broker节点 rocketMQ-console服务 本文主要介绍安装rocketMQ4.4.0,主要分为四步,分别为: 1.拉取rocketmq镜像. 2.创建namesrv. 3.创建broker节点,我在这里介绍的是创建单个broker的. 4.rocketMQ-console服务,用于管理rocketMQ的管理界面. 拉取rocketmq镜像 docker命令如下 docker pull rocketmqinc/rocketm

  • Docker阿里云RocketMQ 4.5.1部署流程详解

    搜索镜像 docker search rocketmq 查看镜像版本 如果要查看其它的镜像,只需要将其中的镜像名称foxiswho/rocketmq替换为其它镜像即可 curl https://registry.hub.docker.com/v1/repositories/foxiswho/rocketmq/tags\ | tr -d '[\[\]" ]' | tr '}' '\n'\ | awk -F: -v image='foxiswho/rocketmq' '{if(NR!=NF &

  • docker安装RocketMQ的实现步骤

    目录 一.检索镜像 二.创建Broker Server 三.创建broker 四.创建rocketmq console 五.测试 六.java样例 七.其他 参考: 一.检索镜像 docker search rocketmq 检索具体版本 curl https://registry.hub.docker.com/v1/repositories/foxiswho/rocketmq/tags | tr -d '[\[\]" ]' | tr '}' '\n' | awk -F: -v image='f

  • Docker 部署RocketMQ的详细操作

    拉取镜像 docker search rocketmq docker pull foxiswho/rocketmq:4.8.0 启动NameServer docker run -d --name rmqnamesrver -e "JAVA_OPT_EXT=-Xms512M -Xmx512M -Xmn128m" -p 9876:9876 foxiswho/rocketmq:4.8.0 sh mqnamesrv 启动Broker 创建挂在目录 mkdir -p /data/docker/r

  • Docker rocketmq部署的实现示例

    目录 准备工作 部署过程 初体验 rocketmq 相关问题 帮助文档 最近学习使用 rocketmq,需要搭建 rocketmq 服务端,本文主要记录 rocketmq 搭建过程以及这个过程踩到的一些坑. 准备工作 在搭建之前,我们需要做一些准备工作,这里我们需要使用 docker 搭建服务,所以需要提前安装 docker.此外,由于 rocketmq 需要部署 broker 与 nameserver ,考虑到分开部署比较麻烦,这里将会使用 docker-compose. rocketmq 架

  • Docker安装部署单机版Rocket及基础讲解

    目录 前言 优缺点 常见名词介绍 单机版安装部署 集群部署 四种集群部署方式 集群部署 前言 目前主流的MQ主要是Rocketmq.kafka.Rabbitmq,Rocketmq相比于Rabbitmq.kafka具有主要优势特性有: 支持事务消息(能够解决分布式事务的问题) 支持顺序消息(底层已经使用内存队列实现) 支持consumer端tag过滤,减少不必要的网络传输 Rocketmq就是对kafka实现的升级版本. 优缺点 RocketMQ 优点 单机吞吐量:十万级 可用性:非常高,分布式架

  • docker 安装部署多个MySQL的实现步骤

    目录 环境配置 安装MySQL 修改MySQL加密方式 安装第二个MySQL 环境配置 本地操作系统:Win10虚拟机的操作系统:CentOS Stream 8已安装docker,可以参考详细安装教程 安装MySQL 如果docker安装成功,我们可以直接使用指令启动一个docker运行MySQL服务,指令如下: docker run -p 3306:3306 --name mysql8.0 -e MYSQL_ROOT_PASSWORD=1234 -d mysql 指令参数说明: run:启动d

  • CentOS7.6系统下Docker安装部署教程

    目录 前提说明 查看系统版本命令 Docker 版本 Docker 安装 Docker 部署 Docker 阿里云镜像加速 前提说明 目前,Centos 仅发行版本中的内核支持 Docker. Docker 运行在 Centos-7 上,要求系统为64位.系统内核版本位3.10以上. Docker 运行在 Centos-6.5 或更高的版本,要求系统为64位.系统内核版本位2.6.32-431 或者更高版本 查看系统版本命令 [root@docker ~]# uname -r 3.10.0-95

  • 使用docker安装部署NextCloud私人网盘的方法步骤

    目录 1.查询并下载NextCloud镜像 2.创建并启动NextCloud容器 3.访问NextCloudWEB界面 4.参考链接 1.查询并下载NextCloud镜像 执行命令 docker search nextcloud docker pull nextcloud 演示操作 # 查询nextcloud镜像 [root@docker ~]# docker search nextcloud NAME DESCRIPTION STARS OFFICIAL AUTOMATED nextcloud

  • Docker安装部署分布式数据库 OceanBase的详细过程

    目录 前言 ️ 1.什么是OceanBase ️ 2.硬件要求 ️ 3.docker部署OceanBase 3.1 下载ob docker镜像 3.2 创建容器 3.3 obd工具查看集群及启动 3.4 登录ob数据库并创建租户 3.5 登录obmysql tenant并创建数据库及表等 前言 快速的体验 OceanBase 的 自动化部署过程,以及了解 OceanBase 集群安装成功后的目录特点和使用方法 ️ 1.什么是OceanBase OceanBase是由蚂蚁集团完全自主研发的国产原生

  • Docker安装部署Redis数据库的实现步骤

    目录 1,拉取镜像 2,创建数据卷 3,创建并编写配置文件 4,创建并启动容器 通过Docker部署Redis,比起我们自己编译安装的方式,会更加方便容易管理.今天就来简单分享一下使用Docker部署Redis数据库. 1,拉取镜像 通过下列命令: docker pull redis 2,创建数据卷 通常,类似于MySQL,Redis作为数据库,我们最好还是需要将其配置和数据等等挂载到数据卷以持久化到宿主机. 仍然是使用具名挂载的方式方便管理. docker volume create redi

  • Docker安装部署Mysql8的过程(以作数据持久化)

    目录 1.创建容器并进行持久化处理 2.配置远程连接并尝试 1.创建容器并进行持久化处理 #拉取镜像 docker pull mysql:8.0.20 #启动镜像,用于拷贝配置文件到宿主机 docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0.20 #查看是否启动成功 docker ps -a #新建挂载目录并拷贝配置文件 mkdir -p /mysqldata/ docker cp mys

  • Docker安装部署Net Core实现过程解析

    一.docker 安装及设置 #安装 CentOS已经将Docker软件包放在了Extras软件源中,直接利用即可 yum install docker-io -y #查看docker的版本 version docker -v #开启Docker服务 systemctl start docker.service #开机启动Docker服务 systemctl enable docker.service #查看Docker服务启动状态 systemctl status docker.service

  • docker安装部署 onlyoffice的详细过程

    0. 系统要求 中央处理器 I5-10400F以上 内存 16 GB,最佳32G内存 硬盘 至少40 GB的可用空间 1:安装Docker Desktop 2:进入BIOS设置CPU的虚拟化 https://jingyan.baidu.com/article/ab0b56305f2882c15afa7dda.html 3:启动Docker desktop 报错解决:https://www.jb51.net/article/214820.htm 3:cmd进入,使用命令安装onlyoffice 安

  • python开发之Docker入门安装部署教程

    一.安装Docker 安装环境: 系统:CentOS Linux7 x86_64 安装脚本 wget -qO- https://get.docker.com/ | sh 回车后系统就开始安装docker 安装完成后可以通过以下脚本查看安装结果 docker --version 通过上面的脚本可以查看当前docker的版本,若出现版本信息则说明安装成功 docker system info 执行上面脚本如果出现"Cannot connect to the Docker daemon at"

随机推荐