您好,欢迎访问三七文档
目录目录...........................................................................................................................11消息队列的概述......................................................................................................21.1消息的概念............................................................................................................................21.2消息的队列的概念................................................................................................................21.3消息队列的概念....................................................................................................................32AMQP..........................................................................................................................42.1AMQP........................................................................................................................................42.2AMQP历史...............................................................................................................................42.3AMQP的架构...........................................................................................................................52.4AMQP的概念...........................................................................................................................53常用消息队列选型..................................................................................................73.1RabbitMQ................................................................................................................................73.2ZeroMQ...................................................................................................................................83.3Qpid.........................................................................................................................................83.4MetaQ......................................................................................................................................93.5ActiveMQ................................................................................................................................93.6OpenMQ................................................................................................................................113.7MemcacheQ..........................................................................................................................124队列参数比较.......................................................................................................141消息队列的概述1.1消息的概念1.消息的概念:消息是由通信双方所需要传递的信息,它可以是各式各样的媒体,如文本、声音、图像等消息,最终的理解方式为,消息传递的双方事先商定这样做的好处是:一是相当于对数据进行了简单的加密,二采用自己定义的格式可以节省通信的传递量。2.消息可以含有发送和接收者的标识,这样只有指定的用户才能看到只传递给他的信息和返回是否操作成功的回执。3.消息也可以含有时间戳,以便接收方对某些与时间相关的应用进行处理消息,还可以含有到期时间,它表明如果在指定时间内消息还未到达则此消息作废,这主要用于与时间性关联较为紧密的应用。1.2消息的队列的概念1.存储的概念:消息队列是发送和接收消息的公用存储空间,它可以存在于内存中或者是物理文件中。2.消息的发送方式:消息可以以两种方式发送,即快递方式和可恢复模式,它们的区别在于,快递方式为了消息的快速传递把消息放置于内存中,而不放于物理磁盘上,以获取较高的处理能力;可恢复模式在传送过程的每一步骤中,都把消息写入物理磁盘中,以得到较好的故障恢复能力。3.消息队列的存贮所在:可以放置在发送方、接收方所在的机器上,也可以单独放置在另外一台机器上。正是由于消息队列在放置方式上的灵活性,形成了消息传送机制的可靠性。当保存消息队列的机器发生故障而重新启动以后,以可恢复模式发送的消息,可以恢复到故障发生之前的状态,而以快递方式发送的消息则丢失了。另一方面,采用消息传递机制,发送方不要再担心接收方是否启动、是否发生故障等非必要因素,只要消息成功发送出去就可以认为处理完成。而实际上对方可能甚至未曾开机,或者实际完成时可能已经是第二天了。4.采用消息队列技术带来的好处是:由于是异步通信,无论是发送方还是接收方都不用等待对方返回成功消息就可以执行余下的代码,因而大大提高了事物处理的能力;在信息传送过程中,信息发送机制具有一定功能的故障恢复能力;消息传递机制使得消息通信的双方具有不同的物理平台成为可能。1.3消息队列的概念1.消息队列是在多个不同的应用之间实现相互通信的一种异步传输模式,相互通信的应用可以分布于同一台机器上,也可以分布于相连的网络空间中的任一位置。2.实现原理:是消息的发送者把自己想要发送的信息放入一个容器中(称为Message),然后把它保存至一个系统公用空间的消息队列中;本地或者是异地的消息接收程序再从该队列中取出发给它的消息进行处理。2AMQP2.1AMQPAMQP是AdvancedMessageQueuingProtocol,即高级消息队列协议。和前面罗列的技术不同,AMQP是一个标准化的消息中间件协议。她的理想是让不同语言,不同系统的应用互相通信,并提供一个简单统一的模型和编程接口。这样,人们就可以采用各种语言和平台来实现自己的应用,当需要和其他系统通信时,只要承认AMQP协议即可。2.2AMQP历史AMQP来自JPMorgon,最初只是这个财大气粗的投行内部使用的消息中间件(注意:它变成了一个支持这个协议的标准实现)。发起人JohnO'Hara很有气魄,他说“从1996年开始到2003我一直在等这样一个标准,但始终没有等到,我已经等不下去了”,并且“投行对这类标准的需求最迫切,而银行又从来不缺乏技术专家”,所以他自己开发了一个。我想一个人如果想成就什么事,就需要这样的英雄气概吧。因为他的努力,AMQP从金融界迅速推广到整个计算机行业,参与者包括了很多IT巨头。虽然今天AMQP依旧是一个草案,但值得我们拭目以待,AMQP目前还是一个草案,最新版本是0.102.3AMQP的架构图2-1AMQP架构2.4AMQP的概念表2-1AMQP概念表概念角色描述Producer消息生产者一个给exchange发送消息的程序,发送方式大致是:它首先创建一个空消息,然后填上内容、路由KEY,最后发送给exchangeRoutingKey正向过滤key、消息特征一个字符串,exchange用之来决定应该该消息投递给哪个queue。(开始时queue已向exchange绑定它所关心消息的routingKey)Exchange交换器接收来自producers的消息,并根据该消息的routingKey和绑定的routingKey,将该消息投递到正确的queuesBinding绑定操作前期将queue所想要的消息特征告诉exchange。Exchange以后收到消息,就按照这个规则来投递。QueueMQClient在MQserver的直接面对在MQserver(实现为broker方式)里面的queue,持有MQclients想要的消息。Consumer消息接收者是MQclient,从MQserver得到想要的消息,它负责创建、主动订阅、共享、使用、破坏queue和binding。表2-2AMQP的exchange类型表Exchange路由行为Fan-Out对所有的queue进行广播Direct按照消息中的routingKEY直接路由TopicQueue向exchange绑定的routingKey命名为bindingKey,它可以采用通配符,如果具体消息中的routingKey与bindingKey相匹配,则把该消息交付给这个queue3常用消息队列选型3.1RabbitMQ出身:RabbitMQ是由LShift提供的一个AdvancedMessageQueuingProtocol(AMQP)的开源实现,由以高性能、健壮以及可伸缩性出名的Erlang写成,因此也是继承了这些优点。架构:图3-1RabbitMQ的架构virtualhost:持有一组exchange、queue及bingding,可以做权限控制Queue:存放消息,由consumer建立,并绑定到ExchangeExchange:根据绑定的规则进行消息转发Binding:绑定规则架构模型:−消息代理架构Broker特点:−Erlang消息机制与AMQP极度吻合−高并发−时间检验的高可靠−高性能−集群易
本文标题:消息队列的选型
链接地址:https://www.777doc.com/doc-4533986 .html