您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 其它文档 > RabbitMQ培训
RabbitMQ高效部署分布式消息队列PPT模板下载:行业PPT模板:节日PPT模板:素材下载:背景图片:图表下载:优秀PPT下载:教程:教程:教程:资料下载:课件下载:范文下载:试卷下载:教案下载:添加目录RabbitMQ原理分析RabbitMQ部署与基础操作RabbitMQ简介RabbitMQ优势RabbitMQ分布式与高可用RabbitMQ简介RabbitMQ是流行的开源消息队列系统,用erlang语言开发。RabbitMQ是AMQP(高级消息队列协议)的标准实现。最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。RabbitMQ中有几个重要概念:虚拟主机(virtualhost),交换机(exchange),路由键(RoutingKey),队列(queue),绑定(binding),通道(channel),消费者(consumer),生产者(producer)。1.Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列。2.Queue:消息队列载体,每个消息都会被投入到一个或多个队列。3.Binding:绑定,它的作用就是把exchange和queue按照路由规则绑定起来。4.RoutingKey:路由关键字,exchange根据这个关键字进行消息投递。5.vhost:虚拟主机,一个broker里可以开设多个vhost,用作不同用户的权限分离。6.producer:消息生产者,就是投递消息的程序。7.consumer:消息消费者,就是接受消息的程序。8.channel:消息通道,在客户端的每个连接里,可建立多个channel,每个channel代表一个会话任务。(1)客户端连接到消息队列服务器,打开一个channel。(2)客户端声明一个exchange,并设置相关属性。(3)客户端声明一个queue,并设置相关属性。(4)客户端使用routingkey,在exchange和queue之间建立好绑定关系。(5)客户端投递消息到exchange。exchange接收到消息后,就根据消息的key和已经设置的binding,进行消息路由,将消息投递到一个或多个队列里。消息队列的使用过程大概如下:RabbitMQ结构图如下:RabbitMQ支持消息的持久化,也就是数据写在磁盘上,为了数据安全考虑,我想大多数用户都会选择持久化。消息队列持久化包括3个部分:(1)exchange持久化,在声明时指定durable=1(2)queue持久化,在声明时指定durable=1(3)消息持久化,在投递时指定delivery_mode=2(1是非持久化)如果exchange和queue都是持久化的,那么它们之间的binding也是持久化的。如果exchange和queue两者之间有一个持久化,一个非持久化,就不允许建立绑定。消息持久化:RabbitMQ原理分析谈到RabbitMQ,首先要谈到MQ和AMQP。MQ全称为MessageQueue,消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需用专用连接来链接它们。AMQP:AdvancedMessageQueuingProtocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全性要求很严格。AMQP允许来自不同供应商的消息生产者和消费者实现真正的互操作扩展,就如同SMTP、HTTP、FTP等协议采用的方式一样。而此前对于消息中间件的标准化努力则集中在API层面上(比如JMS),且没有提供互操作性的途径。不同于JMS的仅仅定义API,AMQP是一个线路级的协议——它描述了通过网络传输的字节流的数据格式。因此,遵从这个协议的任何语言编写的工具均可以操作AMQP消息。RabbitMQ部署与基本操作一、RabbitMQ环境安装:1、安装Erlangrpm–ivherlang-18.1-1.el6.x86_64.rpm2、安装RabbitMQrpm–ivhrabbitmq-server-3.5.6-1.noarch.rpm3、开放端口5672Iptables-AINPUT-ptcp--dport5672-jACCEPT二、环境配置:rabbitmq_management一般情况下,RabbitMQ的默认配置就足够了。如果希望特殊设置的话,需要手动创建,配置文件分别为:环境变量配置文件rabbitmq-env.conf配置信息配置文件rabbitmq.config环境变量初始值通过文件rabbitmq-env.conf来配置,rabbitmq-env.conf默认位置在/etc/rabbitmq,且位置不可更改。rabbitmq-env.conf中的每项都以RABBITMQ_为前缀,常用参数如下:RABBITMQ_NODE_IP_ADDRESS=//IP地址,空串bind所有地址,指定地址bind指定网络接口RABBITMQ_NODE_PORT=//TCP端口号,默认是5672RABBITMQ_NODENAME=//节点名称。默认是rabbitRABBITMQ_CONFIG_FILE=//配置文件路径RABBITMQ_MNESIA_BASE=//mnesia所在路径RABBITMQ_LOG_BASE=//日志所在路径RABBITMQ_PLUGINS_DIR=//插件所在路径在环境变量配置文件即rabbitmq-env.conf中通过RABBITMQ_CONFIG_FILE指定的文件加后缀.config。一般取名为rabbitmq.config,该文件是标准的Erlang配置文件,rabbitmq.config文件中每个参数为一个Erlangtuple,结构为{Key,Value},Key为atom类型,Value为一个term,其中几个关键参数为:tcp_listerners:设置rabbimq的监听端口,默认为[5672]。disk_free_limit:磁盘低水位线,若磁盘容量低于指定值则停止接收数据,默认值为{mem_relative,1.0},即与内存相关联1:1,也可定制为多少byte。vm_memory_high_watermark:设置内存低水位线,若低于该水位线,则开启流控机制,默认值是0.4,即内存总量的40%。hipe_compile:将部分rabbimq代码用HighPerformanceErlangcompiler编译,可提升性能,该参数是实验性,若出现erlangvmsegfaults,应关掉。force_fine_statistics:该参数属于rabbimq_management,若为true则进行精细化的统计,但会影响性能。frame_max:包大小,若包小则低延迟,若包则高吞吐,默认是131072=128K。heartbeat:客户端与服务端心跳间隔,设置为0则关闭心跳,默认是600秒。三、安装插件并启动:启用插件:rabbitmq-pluginsenablerabbitmq_managementguest这个默认的用户只能通过来登录,其他的IP无法直接使用这个账号;如果要远程通过Web控制台管理RabbitMQ需要进行如下的配置:a)新增用户:rabbitmqctladd_user{username}{password}b)设置用户角色:rabbitmqctlset_user_tags{username}administratoc)编辑/etc/rabbitmq/rabbitmq.config添加如下配置信息:[{rabbit,[{tcp_listeners,[5672]},{loopback_users,[{username}]}d)启动RabbitMQ服务rabbitmq-server-detachedRabbitMQ集群部署一、为集群中所有服务器安装Erlang和RabbitMQ。二、同步所有服务器时间。三、修改/etc/hosts文件,加入集群所有节点描述:192.168.1.1node1192.168.1.2node2192.168.1.3node3四、设置ErlangCookie:ErlangCookie文件:/var/lib/rabbitmq/.erlang.cookie。将node1的该文件复制到node2、node3等集群。五、使用-detached参数启动各节点RabbitMQ。六、组成集群将node2、node3与node1组成集群:node2#rabbitmqctlstop_appnode2#rabbitmqctljoin_clusterrabbit@node1node2#rabbitmqctlstart_app此时node2与node3也会自动建立连接;现在node2、node3均为磁盘节点,如果要使用内存节点,则可以使用如下命令加入集群:node2#rabbitmqctljoin_cluster--ramrabbit@node1集群配置好后,可以在RabbitMQ任意节点上执行如下命令来查看是否集群配置成功。rabbitmqctlcluster_status七、设置镜像队列策略:在任意一个节点上执行:#rabbitmqctlset_policy-pvhostpathname^‘{ha-mode:all,ha-sync-mode:automatic}’set_policy[-pvhostpath][--prioritypriority][--apply-toapply-to]namepatterndefinition将所有队列设置为镜像队列,即队列会被复制到各个节点,各个节点状态保持一直。完成这9个步骤后,RabbitMQ高可用集群就已经搭建好了。RabbitMQ优势谢谢!
本文标题:RabbitMQ培训
链接地址:https://www.777doc.com/doc-4679204 .html