【Docker应用篇】Docker安装RocketMQ

news2024/9/23 5:19:53

【Docker应用篇】Docker安装RocketMQ

  • Centos 7.4安装Docker
  • Docker安装RocketMQ
    • 技术架构
    • 安装

Centos 7.4安装Docker

1、较旧版本的Docker被称为docker或docker-engine,如果已安装这些,请卸载它们:

yum remove -y docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine

2、安装一些必要的工具:

yum install -y yum-utils device-mapper-persistent-data lvm2

3、添加Docker的存储库

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

4、安装Docker-ce(社区版)

yum install -y docker-ce

5、启动Docker

systemctl enable docker

Docker安装RocketMQ

技术架构

在这里插入图片描述
RocketMQ架构上主要分为四部分,如上图所示:

  • Producer:消息发布的角色,支持分布式集群方式部署。Producer通过MQ的负载均衡模块选择相应的Broker集群队列进行消息投递,投递的过程支持快速失败并且低延迟。
  • Consumer:消息消费的角色,支持分布式集群方式部署。支持以push推,pull拉两种模式对消息进行消费。同时也支持集群方式和广播方式的消费,它提供实时消息订阅机制,可以满足大多数用户的需求。
  • NameServer:NameServer是一个非常简单的Topic路由注册中心,其角色类似Dubbo中的zookeeper,支持Broker的动态注册与发现。主要包括两个功能:Broker管理,NameServer接受Broker集群的注册信息并且保存下来作为路由信息的基本数据。然后提供心跳检测机制,检查Broker是否还存活;路由信息管理,每个NameServer将保存关于Broker集群的整个路由信息和用于客户端查询的队列信息。然后Producer和Conumser通过NameServer就可以知道整个Broker集群的路由信息,从而进行消息的投递和消费。NameServer通常也是集群的方式部署,各实例间相互不进行信息通讯。Broker是向每一台NameServer注册自己的路由信息,所以每一个NameServer实例上面都保存一份完整的路由信息。当某个NameServer因某种原因下线了,Broker仍然可以向其它NameServer同步其路由信息,Producer,Consumer仍然可以动态感知Broker的路由的信息。
  • BrokerServer:Broker主要负责消息的存储、投递和查询以及服务高可用保证,为了实现这些功能,Broker包含了以下几个重要子模块。
    • Remoting Module:整个Broker的实体,负责处理来自clients端的请求。
    • Client Manager:负责管理客户端(Producer/Consumer)和维护Consumer的Topic订阅信息
    • Store Service:提供方便简单的API接口处理消息存储到物理硬盘和查询功能。
    • HA Service:高可用服务,提供Master Broker 和 Slave Broker之间的数据同步功能。
    • Index Service:根据特定的Message key对投递到Broker的消息进行索引服务,以提供消息的快速查询

在这里插入图片描述

安装

1、搜索查询远程仓库中rocketmq镜像

docker search rocketmq

在这里插入图片描述

2、foxiswho/rockermq镜像stars最多,所以拉取运行该镜像。创建NameServer容器并启动,端口使用 RecketMQ 默认端口

docker run -d -p 9876:9876 --name rmqserver  foxiswho/rocketmq:server-4.5.1

在这里插入图片描述

3、创建 broker 容器并启动,因为 Broker 有需要配置需要我们修改,所以在创建 broker 容器时,使用宿主机的配置文件,方便日后修改。

vim /usr/local/java_study/roketmq/conf/broker.conf

brokerIP1 = 192.168.56.10 : 虚拟机的ip地址

brokerIP1 = 192.168.56.10
listenPort = 10911
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
enablePropertyFilter=true

4、创建并启动 Broker

docker run -d -p 10911:10911 -p 10909:10909 --name rmqbroker --link rmqserver:namesrv -e "NAMESRV_ADDR=namesrv:9876" -e "JAVA_OPTS=-Duser.home=/opt" -e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m" -v  /usr/local/java_study/roketmq/conf/broker.conf:/etc/rocketmq/broker.conf foxiswho/rocketmq:broker-4.5.1

在这里插入图片描述

5、docker 安装一下 RocketMQ 的可视化管理页面

docker run -d --name rmqconsole -p 8180:8080 --link rmqserver:namesrv -e "JAVA_OPTS=-Drocketmq.namesrv.addr=namesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false"  -t styletang/rocketmq-console-ng

在这里插入图片描述

访问: http://192.168.56.10:8180/#/RocketMQ可视化界面控制台

在这里插入图片描述

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

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

相关文章

ubuntu18.04 cuda卸载及安装

1.若电脑上已经安装了其他版本的cuda及显卡驱动,需要完全卸载并删除相关文件,否则会导致安装不成功,执行如下: 1.1卸载cuda,步骤如下: cd /usr/local/cuda-xx.x/bin/ (进入你的cuda文件夹下) sudo ./cuda-…

流程控制|使用循环结构等完成重复性工作(文末附视频)

本节介绍Go语言中的程序流程控制结构,具体包括以下内容: 循环结构流程控制语句条件分支结构 经过前面两个小节的学习,我们初步掌握了Go语言的语法知识。本小节将介绍循环和条件分支,从而使用少量代码完成大量重复性的操作&#x…

NestJS 项目实战 需求分析(文末附视频)

前言 一般常规的项目立项之初会有一份 MRD(Market Requirements Document,市场需求文档)用来判断产品的必需性以及价值等。 对于基础项目开发来说,使用 MRD 可能有些重量级,但我们也需要对一个新的基建类型项目做一个…

【快速幂】875. 快速幂

875. 快速幂 文章目录题目描述输入格式:输出格式:数据范围输入样例输出样例方法:快速幂解题思路代码复杂度分析:题目描述 给定 nnn 组 ai,bi,pia_i,b_i,p_iai​,bi​,pi​,对于每组数据,求出 aibimodpia_i…

Numpy常用random随机函数

Numpy常用random随机函数 seed 向随机数生成器传递随机状态种子 只要random.seed( * ) seed里面的值一样,那随机出来的结果就一样。所以说,seed的作用是让随机结果可重现。也就是说当我们设置相同的seed,每次生成的 随机数相同。如果不设置…

冯 • 诺依曼体系结构与操作系统

目录 一、冯 • 诺依曼体系结构 1.1 冯 • 诺依曼体系结构推导 1.2 内存提高效率 1.3 具体案例理解冯 • 诺依曼体系结构 1.4 其他认识 二、操作系统 2.1 操作系统概念 2.2 操作系统的上下层 2.3 管理理念:先描述,再组织 一、冯 • 诺依曼体系结构 1.1 冯 …

Acwing - 算法基础课 - 笔记(数学知识 · 四)(补)

数学知识(四) 这一小节讲的是容斥原理和简单博弈论。 容斥原理 定义 最基本的,假设有3个两两相交的圆。那么三个圆所覆盖的面积大小为 S1S2S3−S1∩S2−S2∩S3−S1∩S3S1∩S2∩S3S_1S_2S_3 - S_1 \cap S_2 - S_2 \cap S_3 - S_1 \cap S_3…

【JavaEE】如何开始最基础的Servlet编程(借助Tomcat实现)

什么是Servlet我们知道服务器工作的三部曲:接收请求 -> 处理请求并计算响应 -> 发送响应Servlet是个接口,实现这个接口的类就是用来进行中间的一个步骤“处理请求并计算响应的”,应用于HTTP传输的中间层。借助Tomcat服务器进行Servlet编…

【论文速递】WACV2022 - 从边界框标注学习小样本分割

【论文速递】WACV2022 - 从边界框标注学习小样本分割 【论文原文】:Learning Few-shot Segmentation from Bounding Box Annotations 获取地址:https://openaccess.thecvf.com/content/WACV2023/papers/Han_Learning_Few-Shot_Segmentation_From_Bound…

Word文档和PDF文件如何互相转换?

工作中,有时候我们需要把Word转换成PDF格式,转换后不但更美观、专业,也可以防止文档被修改。 那Word文档如何转换成PDF文件呢?其实在Word里面就可以直接转换。 文档编辑好后,在菜单中点击【文件】选项,然…

搭建 Go 语言的开发环境(文末附视频讲解)

从本小节开始,我们就要正式动手实践了。 类比现实生活,我们若要钉钉子,就需要准备锤子;想要烧菜,就需要准备灶具和食材…… 类似地,若要在电脑上编写 Go 语言程序,便要先配置开发环境。 下载和…

干货 | 互联网广告数据的匿名化方案研究

以下内容整理自清华大学《数智安全与标准化》课程大作业期末报告同学的汇报内容。第一部分:背景介绍一、匿名化必要性互联网广告具有非常重要的商业价值,同时也是涉及数据处理十分密集的行业,出现了操作规范化、个人信息保护和商业数据安全等…

[GXYCTF2019]禁止套娃(无参数RCE)

目录 信息收集 知识讲解 涉及函数 PHP的正则表达式 无参rce 用到的函数 思路分析 方法一 方法二 信息收集 拿到这道题,抓包看了看,啥也没有,用dirsearch爆破目录发现.git目录,猜测存在.git源码泄露,用githac…

Web Spider XHR断点 堆栈跟值 逆向案例(四)

声明 此次案例只为学习交流使用,抓包内容、敏感网址、数据接口均已做脱敏处理,切勿用于其他非法用途; 文章目录声明前言一、任务说明二、网站分析三、XHR断点调试,扣JS加密代码四、代码实现1、JS加密代码:encode.js2、…

安卓逆向:基础入门(一)

前言随着app的广泛应用,使用过程中,难免会遇到些很不友好的功能,比如:游戏充值、间断性弹窗广告、续费解锁下一回等等。而随之会产生如何将这些功能取消掉,而Android逆向就可以做到,纵向丝滑。当然这只是安…

Kinect与TOF、双目、结构光相机比较相机国产、非国产统计参数对比分析

Kinect与TOF、双目、结构光相机比较相机国产、非国产统计参数对比分析 Kinect v1和Kinect v2之间的参数比较 从图中可以看出,Kinect v2的表现比Kinect v1要好得多:首先最令人印象深刻的是分辨率的提高,v2达到了1080p,甚至视野也大…

JavaWeb | JDBC概述及IDEA连接MySQL

本专栏主要是记录学习完JavaSE后学习JavaWeb部分的一些知识点总结以及遇到的一些问题等,如果刚开始学习Java的小伙伴可以点击下方连接查看专栏 本专栏地址:🔥JavaWeb Java入门篇: 🔥Java基础学习篇 文章目录一、前言二…

java基础学习 day36(字符串相关类的底层原理)

字符串存储的内存原理 直接赋值会复用字符串常量池中已有的new出来的不会复用,而是开辟一个新的空间来创建 “”号比较的到底是什么 基本数据类型比较数据值引用数据类型比较地址值 PS. 所以以后对引用数据类型,不要用“”,改用.equals()…

RS485接线方式小科普

欢迎来到东用知识小课堂!RS-485采用平衡发送和差分接收方式实现通信:发送端将串行口的ttl电平信号转换成差分信号a,b两路输出,经过线缆传输之后在接收端将差分信号还原成ttl电平信号。RS-485总线网络拓扑一般采用终端匹配的总线型…

【Linux】基于 Pintos 实现新的用户级程序的系统调用 | 冯诺依曼架构

💭 写在前面:本章我们首先会明确冯诺依曼体系结构的概念,旨在帮助大家理解体系结构在硬件角度去理解数据流走向的问题。理解完之后我们再去谈操作系统,这个在之前的章节已经有所铺垫,当时我们只讲解了操作系统是什么&a…