RabbitMQ学习(一)中间件技术、消息队列协议、持久化、分发策略、高可用与高可靠、入门与安装、角色分类
创始人
2025-05-31 09:00:48
0

中间件技术与分布式架构

分布式中间件

消息中间件

类型:ActiveMQ、RabbitMQKafka、RocketMQ
场景:消息中间件监控数据 、异步数据传输场景、流量削峰、任务调度、海量数据同步、分布式事务、日志管理、大数据分析与传递、数据的分发与异步处理
协议与设计:AMQP、MQTT、持久化设计、Kafka协议、消息分发设计、高可用设计、可靠性设计、容错设计。
本质:是一种接收数据、存储数据、发送数据等功能的服务。
核心组成部分:协议、持久化机制、分发策略、高可用、高可靠、容错机制

消息中间件是什么:

利用可靠的消息传递机制进行系统和系统之间的直接通信。
通过提供消息传递和消息排队机制,可以在分布式系统环境下扩展进程间的通信。

负载均衡中间件

Nginx、LVS 负载均衡软件、KeepAlive、CDN

数据库中间件

Mycat、ShardingJDBC

缓存中间件

MemCache、Redis

案例分析:

异步数据保存、订单数据消息分发、分布式事务、消息容错、分布式锁、分布式会话、分库分表

消息队列协议

网络协议三要素

  1. 语法:用户数据与控制信息的结构格式及数据出现的顺序。
  2. 语义:解释控制信息每个部分的意义。规定了需要发出何种控制信息以及完成的动作,做出啥样的响应。
  3. 时序:对事件发生顺序的详细说明。

http协议:
语法:http规定请求报文和响应报文的格式
语义:客户端主动发起请求称为请求。
时序:一个请求对应一个响应。先有请求后有响应。

消息中间件采用的并不是http协议,常见的消息中间件协议有:OpenWire、AMQP、MQTT、Kafka、OpenMessage

为什么消息中间件不直接采用http协议?

  1. 由于http请求头和响应头比较复杂。包含了cookie、数据加密解密、状态码、响应码等附加功能,但是对于一个消息而言,不需要这么复杂。只需要负责数据的传递、存储、分发即可,追求的是高性能、简洁
  2. 大部分情况下http都是短链接,在实际交互过程中,一个请求到响应可能会中断,中断以后就不会进行持久化,会造成数据丢失。不利于消息中间件的业务场景。因为消息中间件可能是一个长期获取消息的过程,出现问题和故障要对数据或消息进行持久化,目的是为了保证消息和数据的高可靠和稳健的运行。

AMQP协议(Advance Message Queuing Protocol)

一个提供同意消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件产品不同,语言不同的限制。Erlang中的实现有RabbitMQ。
特性:分布式事务、消息的持久化、高性能与高可靠的消息处理优势

MQTT协议(Message Queuing Telemetry Transport)

物联网系统架构中的重要组成部分。
特点:轻量、结构简单、传输快、不支持事务、没有持久化设计
应用场景:适用于计算能力有限、低带宽、网络不稳定的场景。
RabbitMQ默认关闭。

OpenMessage

分布式中间件、流处理的呢个领域的应用开发标准。
特点:结构简单、解析速度快、支持事务和持久化设计。

Kafka协议

基于TCP/IP的二进制协议。消息内部通过长度来分割,由一些基本数据类型组成。
特点:结构简单、解析速度快、无事务支持、有持久化设计

消息队列的持久化

持久化:简单来说就是将数据存入硬盘,而不是存储在服务器内存中,使数据能够永久保存。
在这里插入图片描述

消息的分发策略

消息队列的角色:生产者、存储消息、消费者
生产者生成消息后,MQ进行存储,消费者如何获取消息?

  • 推送push:
  • 拉取pull:

高可用、高可靠

当业务量增加时,请求也过大,一台消息中间件服务器会触及CPU、内存、磁盘的极限,一台消息服务器无法满足业务需求,所以消息中间件必须支持集群来达到高可用目的。

集群模式

1. 主从共享数据的部署方式

生产者将消息发送到master节点,所有的都链接这个消息队列共享这块数据区域,master负责写入,一旦master挂掉,slave节点继续服务,从而形成高可用。
在这里插入图片描述

2. 主从同步数据的部署方式

写入消息同样在master节点,但是主节点会同步数据到slave节点形成副本,和zookeeper或者redis主从机制类似。这样可以达到负载均衡的效果,如果消费者有多个,这样就可以取不同的节点进行消费,因为消息的拷贝和同步会占用很大的带宽和网络资源。
在这里插入图片描述

3. 多主集群同步部署模式

与前面的区别不是很大,但是可以从任意的节点进行写入。
在这里插入图片描述

4. 主从转发

如果插入的数据是broker1中,元数据信息会存储数据的相关描述和记录存放位置(队列)。会对描述信息也就是元数据信息进行同步,如果消费者在broker2进行消费,发现自己没有对应的消息,额可以从对应的元数据信息中取查询,然后返回对应的消息信息。eg:买黄牛票,第一个黄牛手里没票会找同行调货。
在这里插入图片描述

Master-Slave和Broker-Cluster组合方案

在这里插入图片描述实现多主多从的热备份机制来完成消息的高可用,及数据的热备份,在生产达到一定的阶级规模才会采用。

核心

其最终目的是为了保证消息服务器不挂掉,出现故障依然可以使用。
总结:要么消息共享、要么消息同步、要么元数据共享。

什么是高可靠机制

所谓的靠可用是指的系统无故障底持续运行,比如一个系统突然崩溃、报错、异常但是不影响业务运行,出错概率低,成为高可靠。
如何保证消息中间件的高可靠:

  1. 消息的传输可靠:通过协议来保证系统间数据解析的正确性。
  2. 消息的存储可靠:通过持久化来保证消息的可靠性。

入门与安装

Windows版本安装步骤参考:
SpringBoot学习笔记(九)消息,JMS、AMQP、RabbitMQ
https://blog.csdn.net/qq_40366738/article/details/108799244

授权账号密码

  1. 新增用户
    rabbitmqctl add_user admin admin123
  2. 设置用户分配操作权限
    rabbitmqctl set_ser_tags admin administrator
  3. 为用户添加资源权限
    rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"

用户级别

  1. administrator:可以登录控制台、查看所有信息、对rabbitmq进行管理
  2. monitoring:监控者,登录控制台、查看所有信息
  3. policymaker:策略制定者,登录控制台、制定策略
  4. management:普通管理员,登录控制台

用户命令

rabbitmqctl add_user  uname pwd
rabbitmqctl set_user_tags 账号 administrator	# 为用户分配操作权限
rabbitmqctl change_password uname pwd
rabbitmqctl delete_user uname
rabbitmqctl list_users # 查看用户列表
rabbitmqctl set_permissions -p /uname  ".*"  ".*"  ".*"  #为用户设置admin权限

Docker安装RabbitMQ

参照官方文档:https://registry.hub.docker.com/_/rabbitmq/

# 拉取镜像
docker pull rabbitmq
# 启动
docker run -d --hostname my-rabbit --name some-rabbit -e RABBITMQ_DEFAULT_USER=user -e RABBITMQ_DEFAULT_PASS=password rabbitmq:3-management
--hostname:指定容器主机名称
--name:指定容器名称
-p:将rabbitmq端口映射到本地
# 查看日志
docker logs -f rabbitmq

角色分类

none:

不能访问management plugin

management:查看自己节点的相关信息

  • 列出自己可以通过AMQP登录的虚拟机
  • 查看自己的虚拟机节点(Virtual hosts)的queues、exchanges、bindings信息
  • 查看和关闭自己的channels和connections
  • 查看有关自己的虚拟机节点virtual hosts的统计信息。包括其他用户在这个节点virtual hosts中的活动信息。

policymaker

  • 包含management的所有权限
  • 查看、创建、删除自己的virtual hosts所属的policies和parameters信息

monitoring

  • 包含management所有权限
  • 罗列出所有的virtual hosts,包括不能登录的virtual hosts
  • 查看其他用户的connections和channels信息
  • 查看节点级别的数据如clustering和memory使用情况
  • 查看所有的virtual hosts的全局统计信息。

Administrator

  • 最高权限
  • 可以创建、删除virtual hosts
  • 可以查看、创建、删除user
  • 查看、创建permissions
  • 关闭所有用户的connections

相关内容

热门资讯

无需预约、提供插座,星巴克回应... 华声在线7月22日讯(全媒体记者 仝若楠 通讯员 万家忻)近日,有网友在社交媒体上发帖表示,广东部分...
黑天鹅突袭!7个跌停! 【导读】*ST苏吴控股孙公司独家经销权将被撤销,拟撤销方被爱美客接手不久 中国基金报记者 闻言 7月...
鲍威尔:美联储须专注于确保大型... 来源:智通财经网 美联储主席鲍威尔周二表示,美联储的监管实践“必须集中在决定安全与稳健的关键领域”。...
香港黄金交易所优势加持,金荣中... 香港作为国际金融中心,凭借高度开放的金融市场、成熟完善的监管体系以及与国际接轨的投资环境,成为亚洲及...
股市必读:惠泰医疗(68861... 截至2025年7月22日收盘,惠泰医疗(688617)报收于295.66元,下跌0.2%,换手率0....
独家|外汇展业改革参与银行增至... 新媒体编辑 | 实习生 宋语菡 7月22日,国新办举行新闻发布会,国家外汇局副局长、新闻发言人李斌,...
今年以来12大类家电以旧换新销... 商务部7月22日消息,商务部流通发展司负责人表示,上半年,我国以旧换新成效显著,国货“潮品”深受欢迎...
AI英语教育站上风口 “伴鱼阅... 本报讯 (记者贾丽)国内在线教育企业北京读我科技有限公司(以下简称“伴鱼”)旗下核心产品“伴鱼阅读营...
罕见一幕!六大期货品种集体涨停... 在“反内卷”政策的刺激下,工业品期货全线大涨! 7月22日,商品期货午后大爆发,焦煤、焦炭、多晶硅、...
Club Med换帅落定:法国... Club Med换帅风波终落定。7月21日夜,复星旅文旗下核心资产Club Med正式任命法国籍高管...
金价又“疯”了!克价1021元... #热点新知#家人们谁懂啊!一觉醒来,金饰克价直接蹦回1021元 !咱楼下金店那电子屏,数字跳得比我工...
读懂IPO|穿透明略科技盈利表... 来源丨时代商业研究院 作者丨陈丽娜 编辑丨郑琳 当前人工智能行业普遍面临盈利难题,例如,素有中国人工...
大摩高管“抄底”香港楼市,一次... 据媒体报道,摩根士丹利董事总经理戴维·约翰·赖特(David John Wraight)以1.473...
山西打造“专精特新”专板 首批... “‘专精特新’企业是培育新质生产力的核心引擎,山西‘专精特新’专板建设是打通金融活水精准灌溉的关键通...
【数据发布】2025年上半年辽... 根据辽宁省地区生产总值统一核算结果,2025年上半年全市实现地区生产总值457.0亿元,按不变价格计...
赴港上市潮起,半导体企业为何扎... 【大河财立方 记者 王磊彬】2025年以来,港股IPO市场迎来新一轮半导体企业上市热潮。 据不完全统...
煤炭板块异动拉升,多只资源主题... 7月22日,市场全天震荡走高,三大指数盘中均创年内新高。板块方面,超级水电、工程机械、煤炭、水泥等板...
中国太平李可东“履新”,兼任2... 中国太平总经理李可东“履新”,兼任旗下两家子公司董事长。 7月21日,太平财险公告称,经国家金融监管...
胜宏科技回应赴港二次IPO,受... 瑞财经 吴文婷7月22日,据媒体报道,胜宏科技证券部工作人员回应筹划港股IPO一事,称公司主要基于资...
洪灏:港股如约创新高,向上空间... 洪灏系莲华资产管理公司管理合伙人&CIO,中国首席经济学家论坛理事 知名经济学家、 莲花投资公司合伙...