千万PV 网站架构之 RabbitMQ 消息列队
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了千万PV 网站架构之 RabbitMQ 消息列队相关的知识,希望对你有一定的参考价值。
RabbitMQ 简介 :
- MQ全称为Message Queue,消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过 队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。其中较为成熟的MQ产品有IBM WEBSPHERE MQ等等。
MQ特点
- MQ是消费-生产者模型的一个典型的代表,一端往消息队列中不断写入消息,而另一端则可以读取或者订阅队列中的消息。MQ和JMS类似,但不同的是JMS是SUN JAVA消息中间件服务的一个标准和API定义,而MQ则是遵循了AMQP协议的具体实现和产品。
RabbitMQ 结构图 :
- Exchange : 消息交换机,它指定消息按什么规则,路由到那个列队。
- Queue : 消息列队载体,每个消息都会被投入到一个或多个列队中。
- Routing Key : 路由关键字,Exchange 根据这个关键字进行消息投递。
消息列队的使用过程 :
- 1.客户端连接到消息列队服务器,打开一个 Channel(消息通道)。
- 2.客户端声明一个 Exchange,并设置相关属性。
- 3.客户端声明一个 Queue ,并设置相关属性。
- 4.客户端使用 Routing Key,在 Exchange和 Queue之间建立好绑定关系。
- 5.客户端投递消息到 Exchange。
本案环境 :
主机名 | 系统 | IP地址 | 防火墙和SELinux | 用途 |
---|---|---|---|---|
mq01 | CentOS 7.3 | 192.168.217.137 | 关闭 | 磁盘节点 |
mq02 | CentOS 7.3 | 192.168.217.138 | 关闭 | 内存节点 |
mq03 | CentOS 7.3 | 192.168.217.139 | 关闭 | 内存节点 |
RabbitMQ 群集部署 :
1.修改所有主机名(重启生效):
systemctl stop firewalld.service
setenforce 0
vim /etc/hostname #其他两台相同
mq01.localdomain
vim /etc/hosts #添加
192.168.217.137 mq01
192.168.217.138 mq02
192.168.217.139 mq03
2.安装 rabbitmq 服务 :
yum install -y epel-release #安装epel源
yum install -y rabbitmq-server #安装rabbitmq服务
[[email protected] ~]# /usr/lib/rabbitmq/bin/rabbitmq-plugins list #查看插件安装信息
[ ] amqp_client 3.3.5
[ ] cowboy 0.5.0-rmq3.3.5-git4b93c2d
[ ] eldap 3.3.5-gite309de4
[ ] mochiweb 2.7.0-rmq3.3.5-git680dba8
......
/usr/lib/rabbitmq/bin/rabbitmq-plugins enable rabbitmq_management #启动群集管理服务
3.配置群集功能 :
vim /var/lib/rabbitmq/.erlang.cookie
#把mq01.erlang.cookie内容复制到mq02、mq03
systemctl restart rabbitmq-server.service #重启服务
4.在mq02、mq03上操作,加入mq01群集 :
rabbitmqctl stop_app #关闭节点
rabbitmqctl join_cluster --ram [email protected] #加入到磁盘节点
rabbitmqctl start_app #开启节点
5.验证集群状态 :
[[email protected] ~]# rabbitmqctl cluster_status #查看状态
Cluster status of node [email protected] ...
[{nodes,[{disc,[[email protected]]},{ram,[[email protected],[email protected]]}]},
{running_nodes,[[email protected],[email protected],[email protected]]},
{cluster_name,<<"[email protected]">>},
{partitions,[]}]
#磁盘节点为mq01,内存节点为mq02、mq03.
6.web管理 :
浏览器访问 http://192.168.217.137:15672/ #默认用户名:guest 密码:guest
以上是关于千万PV 网站架构之 RabbitMQ 消息列队的主要内容,如果未能解决你的问题,请参考以下文章