docker快速部署rabbitmq单机集群

1. 下载rabbitmq镜像

 docker pull rabbitmq:management

2. 创建docker网络 rabbtimanet

docker network create rabbtimanet

3.部署rabbitmq容器

  • rabbitmq1:
docker run -d --name=rabbitmq1 -p 5672:5672 -p 15672:15672 -e RABBITMQ_NODENAME=rabbitmq1 -e RABBITMQ_ERLANG_COOKIE='YZSDHWMFSMKEMBDHSGGZ'  -h rabbitmq1 --net=rabbtimanet rabbitmq:management

注:如果仅部署rabbitmq单节点,此处已完成部署。

  • rabbitmq2:
docker run -d --name=rabbitmq2 -p 5673:5672 -p 15673:15672 -e RABBITMQ_NODENAME=rabbitmq2 -e RABBITMQ_ERLANG_COOKIE='YZSDHWMFSMKEMBDHSGGZ'  -h rabbitmq2 --net=rabbtimanet rabbitmq:management
  • rabbitmq3:
docker run -d --name=rabbitmq3 -p 5674:5672 -p 15674:15672 -e RABBITMQ_NODENAME=rabbitmq3 -e RABBITMQ_ERLANG_COOKIE='YZSDHWMFSMKEMBDHSGGZ'  -h rabbitmq3 --net=rabbtimanet rabbitmq:management

4.节点加入集群

在节点2与节点3容器中,执行以下命令,加入集群

# 停止当前机器中rabbitmq的服务
rabbitmqctl stop_app

# 从管理数据库中移除所有数据
rabbitmqctl reset

# 加入rabbitmq1,rabbitmq1为要加入的节点
rabbitmqctl join_cluster --ram rabbit@rabbitmq1

# 开启当前机器的rabbitmq服务
rabbitmqctl start_app

# 查看集群信息
rabbitmqctl cluster_status
  • 打开网页管理页面查看nodes

docker快速部署rabbitmq单机集群_第1张图片

5.RabbitMq的使用说明

1、应用场景:异步处理

(1)串行方式:将注册信息写入数据库后,发送注册邮件,再发送注册短信,以上三个任务全部完成后才返回给客户端。 这有一个问题是,邮件,短信并不是必须的,它只是一个通知,而这种做法让客户端等待没有必要等待的东西。
docker快速部署rabbitmq单机集群_第2张图片

(2)并行方式:将注册信息写入数据库后,发送邮件的同时,发送短信,以上三个任务完成后,返回给客户端,并行的方式能提高处理的时间。

docker快速部署rabbitmq单机集群_第3张图片

假设三个业务节点分别使用50ms,串行方式使用时间150ms,并行使用时间100ms。虽然并性已经提高的处理时间,但是,前面说过,邮件和短信对我正常的使用网站没有任何影响,客户端没有必要等着其发送完成才显示注册成功,应该是写入数据库后就返回。

(3)消息队列:引入消息队列后,把发送邮件,短信不是必须的业务逻辑异步处理。

docker快速部署rabbitmq单机集群_第4张图片

由此可以看出,引入消息队列后,用户的响应时间就等于写入数据库的时间+写入消息队列的时间(可以忽略不计),引入消息队列后处理后,响应时间是串行的3倍,是并行的2倍。

2、应用场景:流量削峰

场景:秒杀活动,一般会因为流量过大,导致应用挂掉,为了解决这个问题,一般在应用前端加入消息队列。

作用:

a.可以控制活动人数,超过此一定阀值的订单直接丢弃(我为什么秒杀一次都没有成功过呢^^)

b.可以缓解短时间的高流量压垮应用(应用程序按自己的最大处理能力获取订单)
docker快速部署rabbitmq单机集群_第5张图片

c.用户的请求,服务器收到之后,首先写入消息队列,加入消息队列长度超过最大值,则直接抛弃用户请求或跳转到错误页面.

d.秒杀业务根据消息队列中的请求信息,再做后续处理.

6.RabbitMQ的特点

RabbitMQ是一款使用Erlang语言开发的,实现AMQP(高级消息队列协议)的开源消息中间件。首先要知道一些RabbitMQ的特点,官网可查:

  • 可靠性。支持持久化,传输确认,发布确认等保证了MQ的可靠性。
  • 灵活的分发消息策略。这应该是RabbitMQ的一大特点。在消息进入MQ前由Exchange(交换机)进行路由消息。分发消息策略有:简单模式、工作队列模式、发布订阅模式、路由模式、通配符模式。
  • 支持集群。多台RabbitMQ服务器可以组成一个集群,形成一个逻辑Broker。
  • 多种协议。RabbitMQ支持多种消息队列协议,比如 STOMP、MQTT 等等。
  • 支持多种语言客户端。RabbitMQ几乎支持所有常用编程语言,包括 Java、.NET、Ruby 等等。
  • 可视化管理界面。RabbitMQ提供了一个易用的用户界面,使得用户可以监控和管理消息 Broker。
  • 插件机制。RabbitMQ提供了许多插件,可以通过插件进行扩展,也可以编写自己的插件。

你可能感兴趣的:(linux,centos,docker,rabbitmq)