一、Rabbit的介绍与安装
文章目录
- MQ概述
- RabbitMQ介绍
- RabbitMQ的安装
MQ概述
MQ全称 Message Queue(消息队列),是在消息的传输过程中保存消息的容器。多用于分布式系统之间进行通信。
传统的分布式系统有两种通信方式:
- 以HTTP为代表的REST,操作简单但是缺点很明显,就是没有长连接。
- 使用RPC通信,缺点是操作一般是同步的,而且各个模块之间的耦合度比较高。
消息队列也可以作为一种第三方工具介入分布式系统之间的通信。
MQ的优势和劣势
MQ的优势主要有三种:
- 应用解耦:使用 MQ 使得应用间解耦,提升容错性和可维护性。
- 异步提速:可以提升用户体验和系统吞吐量(单位时间内处理请求的数目)。
- 削峰填谷:提高系统稳定性。比如系统的请求量突然暴增,我们可以使用MQ来接收暴增的消息,然后一部分一部分的发送给系统,降低系统的压力。
MQ的劣势主要也有三种:
4. 系统可用性降低:系统引入的外部依赖越多,系统稳定性越差。一旦 MQ 宕机,就会对业务造成影响。
5. 系统复杂度提高:MQ 的加入大大增加了系统的复杂度,以前系统间是同步的远程调用,现在是通过 MQ 进行异步调用。如何保证消息没有被重复消费?怎么处理消息丢失情况?那么保证消息传递的顺序性?
6. 一致性问题:A 系统处理完业务,通过 MQ 给B、C、D三个系统发消息数据,如果 B 系统、C 系统处理成功,D 系统处理失败。如何保证消息数据处理的一致性?
RabbitMQ介绍
RabbitMQ是消息队列的一种,采用Erlang语言开发,下面是Rabbit的基础架构图:
RabbitMQ相关概念介绍
Broker:接收和分发消息的应用,RabbitMQ Server就是 Message Broker。
Connection:连接,应用服务与Server的连接。
Channel:信道,客户端可建立多个Channel,每个Channel代表一个会话任务。
Message:消息,由MessageProperties
和body
构成,MessageProperties可对消息的优先级、过期时间等参数进行设置,其中参数correlation_id
一般作为消息主键。
Exchange:交换机,用于转发消息,消息将根据routeKey
被交换机转发给对应的绑定队列。
Queue:队列,消息最终被送到这里等待消费者取走,参数中的Auto-delete
意为当前队列的最后一个消息被取出后是否自动删除。
Binding:绑定exchange和queue之间的虚拟连接,二者通过routingkey
进行绑定。
Routingkey:路由规则,交换机可以用它来确定消息被路由到哪里。
Virtual host:类似于网络中的 namespace 概念,用于进行逻辑隔离,一个虚拟主机中可以有多个Exchange和Queue,同一个虚拟主机中不能有名称一样的Exchange和Queue。
RabbitMQ的安装
RabbitMQ
最简单的一种安装方式就是将它安装在Docker中:
首先创建一个目录用于与容器中的rabbitmq配置文件形成映射:
mkdir /opt/module/rabbitmq/data -p
接着在docker中运行rabbitmq镜像:
# 5672是rabbitmq 默认TCP监听端口,到时候程序连接的也是这个端口
# 15672是rabbitmq提供的ui管理界面的端口
# 25672是rabbitmq集群之间通信的端口
# 如果docker跑在云服务器上,记得在安全组中开放5672和15672端口
docker run -d --hostname rabbit-svr --name rabbit -p 5672:5672 -p 15672:15672 -p 25672:25672 -v /opt/module/rabbitmq/data:/var/lib/rabbitmq rabbitmq:management
然后就可以在浏览器中访问rabbitmq的ui控制界面了,默认账号和密码都是guest
:
我们可以在控制台中创建相应的exchange、queue等等操作:
一、Rabbit的介绍与安装相关推荐
- 1、Rabbit MQ 介绍与安装
本页目录 什么是MQ? MQ的优势 劣势 使用MQ的场景 常见的MQ产品 RabbitMQ的简介: RabbitMQ 基础架构图 RabbitMQ 基本概念 RabbitMQ 的7种工作模式 Rabb ...
- OpenStack——编排(Heat)服务介绍与安装
文章目录 OpenStack--编排(Heat)服务介绍与安装 安装和配置(controller) 准备 (1)创建数据库 (2)加载admin user 的环境变量 (3)创建服务凭证 (4)创建H ...
- Scrapy-Splash的介绍、安装以及实例
scrapy-splash的介绍 在前面的博客中,我们已经见识到了Scrapy的强大之处.但是,Scrapy也有其不足之处,即Scrapy没有JS engine, 因此它无法爬取JavaScrip ...
- Springlake-01 介绍功能安装
Springlake-01 介绍&功能&安装 1. 简介与功能 1)Springlake 是一个企业内容平台SECP 2)是一个可配置的系统,80%内容可以配置 3)允许建立和配置垂直 ...
- Kafka系列一之架构介绍和安装
Kafka架构介绍和安装 写在前面 还是那句话,当你学习一个新的东西之前,你总得知道这个东西是什么?这个东西可以用来做什么?然后你才会去学习它,使用它.简单来说,kafka既是一个消息队列,如今,它也 ...
- SharpWebMail介绍和安装(转)
SharpWebMail介绍和安装 什么是:SharpWebMail SharpWebMail是一款C#开发的基于WEB应用程序的多语言的WEB邮件服务.它允许我们使用SMTP或IMAP服务来完成发送 ...
- Linux系统Vi/Vim编辑器的简单介绍、安装/卸载、常用命令
Linux系统Vi/Vim编辑器的简单介绍.安装/卸载.常用命令 1.介绍 vi(Visual Interface)编辑器是Linux和Unix上最基本的文本编辑器,工作在字符模式下.由于不需要图形界 ...
- Storm介绍及安装部署
本节内容: Apache Storm是什么 Apache Storm核心概念 Storm原理架构 Storm集群安装部署 启动storm ui.Nimbus和Supervisor 一.Apache S ...
- LNMP基础架构介绍与安装
1.LNMP架构介绍 LNMP==Linux+Nginx+Mysql+PHP nginx:省资源,省cpu,所以在高并发时能够处理更多的请求,高端能达到3万到5万的并发量. nginx和LAMP不 ...
最新文章
- promise实现多个请求并行串行执行
- Element-ui学习笔记3--Form表单(二)
- python3.5升级_python升级 (2.6升级到3.5)
- Linux 用户进程内存空间详解
- 100c之31:哥德巴赫猜想
- User profile synchronization service starting issues 用户配置文件同步服务启动问题
- 报错:[Warning] lambda expressions only available with -std=c++11 or -std=gnu++11
- ASP.NET Core Web 应用程序系列(一)- 使用ASP.NET Core内置的IoC容器DI进行批量依赖注入(MVC当中应用)...
- 【Python】Pandas高效加载JSON文件
- MySQL Bit Functions and Operators(二进制方法)
- Grafana展示DNS解析延时
- JAVA中的位运算符
- JavaScript 凭什么力压 Java、Python 横扫编程语言榜单?
- [Manifest]关于version
- 基于H5的移动端APP开发框架
- 计算机网络管理员四级查询入口,计算机网络管理员:国家职业资格四级
- Mac批量恢复废纸篓文件
- R语言如何做配对t检验?
- 计算机专业必须用英语口语要求,哪些专业需要英语口语考试
- Dumpling 导出表内并发优化丨TiDB 工具分享