MQ消息中间件简介&安装RabbitMQ

目录

1.MQ消息中间件

1.1什么是MQ消息中间件?

 1.2为什么要使用MQ

1.2.1MQ总结为三个好处:  

1.3MQ的缺点

2.常见的MQ组件

 2.1什么是RabbitMQ?

2.2RabbitMQ的原理(重要)

3.安装RabbitMQ

3.1下载程序

  3.2开始安装

4.配置虚拟主机及用户

4.1用户角色

​4.2 角色说明:

 4.3Virtual Hosts配置

4.4.1创建Virtual Hosts  

4.4.2设置Virtual Hosts权限 


1.MQ消息中间件

1.1什么是MQ消息中间件?

MQ全称 Message Queue(消息队列),是在消息的传输过程中保存消息的容器。它是应用程序和应用程序之间的通信方法。

 1.2为什么要使用MQ

在项目中,可将一些==无需即时返回且耗时==的操作提取出来,进行异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高系统吞吐量

1.2.1MQ总结为三个好处:  

(1) 应用解耦

以电商应用为例,应用中有订单系统、库存系统、物流系统、支付系统。用户创建订单后,如果耦合调用库存系统、物流系统、支付系统,任何一个子系统出了故障,都会造成下单操作异常。当转变成基于消息队列的方式后,系统间调用的问题会减少很多,比如物流系统因为发生故障,需要几分钟来修复。在这几分钟的时间里,物流系统要处理的内容被缓存在消息队列中,用户的下单操作可以正常完成。当物流系统恢复后,继续处理订单信息即可,中间用户感受不到物流系统的故障,提升系统的可用性。

 (2)异步提速

上面要完成下单需要花费的时间: 20 + 300 + 300 + 300 = 920ms 用户点击完下单按钮后,需要等待920ms才能得到下单响应,太慢!

使用MQ可以解决上述问题  

用户点击完下单按钮后,只需等待25ms就能得到下单响应 (20 + 5 = 25ms)。 提升用户体验和系统吞吐量(单位时间内处理请求的数目)。  

 (3)削峰填谷

举个例子,如果订单系统最多能处理一千次订单,这个处理能力应付正常时段的下单时绰绰有余,正常时段我们下单一秒后就能返回结果。但是在高峰期,如果有两千次下单操作系统是处理不了的,只能限制订单超过一千后不允许用户下单。使用消息队列做缓冲,我们可以取消这个限制,把一秒内下的订单分散成一段时间来处理,这时有些用户可能在下单十几秒后才能收到下单成功的操作,但是比不能下单的体验要好。 简单来说: 就是在访问量剧增的情况下,但是应用仍然不能停,比如“双十一”下单的人多,但是淘宝这个应用仍然要运行,所以就可以使用消息中间件采用队列的形式减少突然访问的压力

使用了 MQ 之后,限制消费消息的速度为1000,这样一来,高峰期产生的数据势必会被积压在 MQ 中,高峰就被“削”掉了,但是因为消息积压,在高峰期过后的一段时间内,消费消息的速度还是会维持在1000,直到消费完积压的消息,这就叫做“填谷”。

使用MQ后,可以提高系统稳定性。

1.3MQ的缺点

  1. 系统可用性降低 系统引入的外部依赖越多,系统稳定性越差。一旦 MQ 宕机,就会对业务造成影响。如何保证MQ的高可用?

  1. 系统复杂度提高 MQ 的加入大大增加了系统的复杂度,以前系统间是同步的远程调用,现在是通过 MQ 进行异步调用。如何保证消息没有被重复消费?怎么处理消息丢失情况?那么保证消息传递的顺序性?

  2. 一致性问题 A 系统处理完业务,通过 MQ 给B、C、D三个系统发消息数据,如果 B 系统、C 系统处理成功,D 系统处理失败。如何保证消息数据处理的一致性?

2.常见的MQ组件

目前业界有很多的 MQ 产品,例如 RabbitMQ、RocketMQ、ActiveMQ、Kafka、ZeroMQ、MetaMq等,也有直接使用 Redis 充当消息队列的案例,而这些消息队列产品,各有侧重,在实际选型时,需要结合自身需求及 MQ 产品特征

 2.1什么是RabbitMQ?

2007 年发布,是一个在 AMQP(高级消息队列协议)基础上完成的,可复用的企业消息系统,是当前最主流的消息中间件之一。 . RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue 高级消息队列协议 )的开源实现,由于erlang 语言的高并发特性,性能较好,本质是个队列,FIFO 先入先出,里面存放的内容是message . RabbitMQ是一个消息中间件:它接受并转发消息。你可以把它当做一个快递站点,当你要发送一个包裹时,你把你的包裹放到快递站,快递员最终会把你的快递送到收件人那里,按照这种逻辑RabbitMQ是一个快递站,一个快递员帮你传递快件。RabbitMQ与快递站的主要区别在于,它不处理快件而是接收,存储和转发消息数据。

2.2RabbitMQ的原理(重要)

名词解释:

  1. Broker:接收和分发消息的应用,RabbitMQ Server就是 Message Broker。

  2. Connection:publisher/consumer 和 broker 之间的 TCP 连接。

  3. Channel:如果每一次访问 RabbitMQ 都建立一个 Connection,在消息量大的时候建立 TCP Connection的开销将是巨大的,效率也较低。Channel 是在 connection 内部建立的逻辑连接,如果应用程序支持多线程,通常每个thread创建单独的 channel 进行通讯,AMQP method 包含了channel id 帮助客户端和message broker 识别 channel,所以 channel 之间是完全隔离的。Channel 作为轻量级的 Connection 极大减少了操作系统建立 TCP connection 的开销。

  4. Exchange:message 到达 broker 的第一站,根据分发规则,匹配查询表中的 routing key,分发消息到queue 中去。常用的类型有:direct (point-to-point), topic (publish-subscribe) and fanout (multicast)。

  5. Queue:消息最终被送到这里等待 consumer 取走。

  6. Binding:exchange 和 queue 之间的虚拟连接,binding 中可以包含 routing key。Binding 信息被保存到 exchange 中的查询表中,用于 message 的分发依据。

  7. Virtual host:出于多租户和安全因素设计的,把 AMQP 的基本组件划分到一个虚拟的分组中,类似于网络中的 namespace 概念。当多个不同的用户使用同一个 RabbitMQ server 提供的服务时,可以划分出多个vhost,每个用户在自己的 vhost 创建 exchange/queue 等。  

3.安装RabbitMQ

3.1下载程序

rabbitMQ安装程序下载路径:

Installing on Windows — RabbitMQ

拉到页面中间找到如下点击:

erlang环境安装程序下载路径:Downloads - Erlang/OTP 

  3.2开始安装

 (1)安装Socat

在线安装依赖环境:
yum install gcc
yum install socat
yum install openssl
yum install openssl-devel

(2)安装Erlang  

mkdir /rabbitmq && cd /rabbitmq
# 上传 erlang-22.0.7-1.el7.x86_64.rpm 安装包上传
# 安装
rpm -ivh erlang-22.0.7-1.el7.x86_64.rpm

(3)安装RabbitMQ 

cd /rabbitmq
# 上传 rabbitmq-server-3.7.17-1.el7.noarch.rpm 安装包
上传
# 安装
rpm -ivh rabbitmq-server-3.7.17-1.el7.noarch.rpm

(4)开启管理界面及配置 

# 开启管理界面
rabbitmq-plugins enable rabbitmq_management
# 配置远程可使用 guest 登录 mq
cd /usr/share/doc/rabbitmq-server-3.7.17
cp rabbitmq.config.example
/etc/rabbitmq/rabbitmq.config
# 修改配置文件
vi /etc/rabbitmq/rabbitmq.config

(5)修改/etc/rabbitmq/rabbitmq.config配置文件:

 

(6)启动

centos6 用这个命令:
/sbin/service rabbitmq-server restart
centos7 用这个命令:
systemctl start rabbitmq-server

4.配置虚拟主机及用户

4.1用户角色

RabbitMQ在安装好后,可以访问http://ip地址:15672 ;其自带了guest/guest的用户名和密码;如果需要创建自定义用户;那么也可以登录 管理界面后,如下操作:

4.2 角色说明

1、超级管理员(administrator) 可登陆管理控制台,可查看所有的信息,并且可以对用户,策略(policy)进 行操作。
2、监控者(monitoring) 可登陆管理控制台,同时可以查看rabbitmq节点的相关信息(进程数,内存
使用情况,磁盘使用情况等)
3、策略制定者(policymaker) 可登陆管理控制台, 同时可以对policy进行管理。但无法查看节点的相关信 息(上图红框标识的部分)。
4、普通管理者(management) 仅可登陆管理控制台,无法看到节点信息,也无法对策略进行管理。
5、 其他无法登陆管理控制台,通常就是普通的生产者和消费者。

 4.3Virtual Hosts配置

        像mysql拥有数据库的概念并且可以指定用户对库和表等操作的权限。RabbitMQ也有类似的权限管理;在RabbitMQ中可以虚拟消息服务器Virtual Host,每个Virtual Hosts相当于一个相对独立的RabbitMQ服务器,每个VirtualHost之间是相互隔离的。exchange、queue、message不能互通。 相当于mysql的db。Virtual Name一般以/开头。

4.4.1创建Virtual Hosts  

4.4.2设置Virtual Hosts权限 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值