消息队列及中转软件总结汇编计算机数据结构与算法_计算机-数据结构与算法.pdf
《消息队列及中转软件总结汇编计算机数据结构与算法_计算机-数据结构与算法.pdf》由会员分享,可在线阅读,更多相关《消息队列及中转软件总结汇编计算机数据结构与算法_计算机-数据结构与算法.pdf(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、消息队列及中转软件总结 摘要 ZeroMQ ActiveMQ Redis MongoDB Memcached 都是开源产品,都可以实现消息中转的功能,但各有不同。ZeroMQ ActiveMQ 消息中转实现形式为队列形式,分布式、集群服务助手。Redis MongoDB 较成熟的非结构性数据库产品,key-value 数据库,结构松散 的文本型数据库。Memcached高性能的分布式内存对象缓存系统,数据读写速度内存级别。MQ消息队列 消息队列(MQ)是一种 应用程序对应用程序的通信方法。应用程序通过写和 检索出入列队的数据(消息)来通信,而无需专用连接来链接它们。消息传递指 的是程序之间通过
2、在消息中发送数据进行通信,而不是通过直接调用彼此来通 信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过队 列来通信。队列的使用除去了接收和发送应用程序同时执行的要求,一般情况下 都需要有一个队列维护服务。消息服务器在分布式系统各应用间消息通信起到了 至关重要的作用。ZeroMQ ZeroMQ是一种基于消息队列的多线程网络库,其对套接字类型、连接处理、帧、甚至路由的底层细节进行抽象,提供跨越多种传输协议的套接字。ZeroMQ 是非 典型的消息中间件,而且更像是一个网络通信框架 ZeroMQ 是网络通信中新的一层,介于应用层和传输层之间(按照 TCP/IP 划分),其是一个可伸
3、缩层,可并行运行,分散在分布式系统间。ZeroMQ 号称是最快的消息队列系统,尤其针对大吞吐量的需求场景。ZMQ 能够实现 RabbitMQ 不擅长的高级/复杂的队列,但是开发人员需要自己组合多 种技术框架,技术上的复杂度是对 ZMQ能够应用成功的挑战。ZeroMQ 具有一个 独特的非中间件的模式,甚至不需要安装和运行一个消息服务器或中间件,因为 应用程序将扮演这个服务角色。只需要简单的引用 ZeroMQ 程序库,然后就可以 愉快的在应用程序之间发送消息了。但是 ZeroMQ 仅提供非持久性的队列,也就 是说如果 down 机,数据将会丢失。其中,Twitter 的 Storm 中使用 Zer
4、oMQ 作 为数据流的传输。ZMQ是个类似于 Socket 的一系列接口,他跟 Socket 的区别是普通的 Socket 是端到端的(1:1 的关系),而 ZMQ却是可以 N:M 的关系,人们对 BSD 套接字的了解较多的是点对点的连接,点对点连接需要显式地建立连接、销毁连 接、选择协议(TCP/UDP)和处理错误等,而 ZMQ屏蔽了这些细节,让你的网络 编程更为简单。ZMQ用于 node 与 node 间的通信,node 可以是主机或者是进程。ZeroMQ 不是单独的服务或者程序,仅仅是一套组件,其封装了网络通信、消 息队列、线程调度等功能,向上层提供简洁的 API,应用程序通过加载库文件
5、,调用 API 函数来实现高性能网络通信。ZeroMQ消息模型 ZeroMQ将消息通信分成 4 种模型,分别是一对一结对模型(Exclusive-Pair)、请求回应模型(Request-Reply)、发布订阅模型(Publish-Subscribe)、推拉模型(Push-Pull)。这 4 种模型总结出了通用的网络通信模型,在实际中 可以根据应用需要,组合其中的 2 种或多种模型来形成自己的解决方案。1.一对一:TCP Connection,TCP Sever 只能接受一个连接,数据双向流动 分布式集群服务助手较成熟的非结构性数据库产品数据库结构松散的文本型数据库高性能的分布式内存对象缓存系
6、统数据读写速度内存级别消息队列消息队列是一种应用程序对应用程序的通信方法应用程序通过写和检索出入列队的直接调用彼此来通信直接调用通常是用于诸如远程过程调用的技术排队指的是应用程序通过队列来通信队列的使用除去了接和发送应用程序同时执行的要求一般情况下都需要有一个队列维护服务消息服务器在分布式系统各应用间消节进行抽象提供跨越多种传输协议的套接字是非典型的消息中间件而且更像是一个网络通信框架是网络通信中新的一层介于应用层和传输层之间按照划分其是一个可伸缩层可并行运行分散在分布式系统间号称是最快的消息队列系统2.请求回应:一个服务端对应多个客户端,每个请求服务端都会给一个回应,相 当于 1 对 N的方
7、式。分布式集群服务助手较成熟的非结构性数据库产品数据库结构松散的文本型数据库高性能的分布式内存对象缓存系统数据读写速度内存级别消息队列消息队列是一种应用程序对应用程序的通信方法应用程序通过写和检索出入列队的直接调用彼此来通信直接调用通常是用于诸如远程过程调用的技术排队指的是应用程序通过队列来通信队列的使用除去了接和发送应用程序同时执行的要求一般情况下都需要有一个队列维护服务消息服务器在分布式系统各应用间消节进行抽象提供跨越多种传输协议的套接字是非典型的消息中间件而且更像是一个网络通信框架是网络通信中新的一层介于应用层和传输层之间按照划分其是一个可伸缩层可并行运行分散在分布式系统间号称是最快的消
8、息队列系统3.发布订阅模型:发布端单向分发数据,且不关心是否把全部信息发送给订阅端,天气预报、微博明星粉丝可以应用这种经典模型。4.推拉模型:Server 端为 push 端,Client 端为 pull 端,如果有多个 Client 端同时连接到 Server 端,则 Server 端会在内部做一个负载均衡,采用平均分 配的算法,均衡推送,改模型主要用于多任务并行。分布式集群服务助手较成熟的非结构性数据库产品数据库结构松散的文本型数据库高性能的分布式内存对象缓存系统数据读写速度内存级别消息队列消息队列是一种应用程序对应用程序的通信方法应用程序通过写和检索出入列队的直接调用彼此来通信直接调用通
9、常是用于诸如远程过程调用的技术排队指的是应用程序通过队列来通信队列的使用除去了接和发送应用程序同时执行的要求一般情况下都需要有一个队列维护服务消息服务器在分布式系统各应用间消节进行抽象提供跨越多种传输协议的套接字是非典型的消息中间件而且更像是一个网络通信框架是网络通信中新的一层介于应用层和传输层之间按照划分其是一个可伸缩层可并行运行分散在分布式系统间号称是最快的消息队列系统 ZeroMQ通信协议:提供进程内、进程间、机器间、广播等四种通信协议,支持 的具体协议类型有:inproc、ipc、tcp、pgm。用类似于 URL形式的字符串指定即可,格式分别为 inproc:/、ipc:/、tcp:/
10、、pgm:/。ZeroMQ会自动根据指定的字符串解析出协议、地址、端口 号等信息。支持常用的多种语言客户端 C+、Java、.Net、Python、Php、Ruby 等。ZeroMQ性能 目前,市面上类似的产品不少,主要有 4 种:MSM(Q 微软产品)、ActiveMQ(Java)、RabbitMQ(Erlang)、ZeroMQ(C+)。除 ZeroMQ外,其它 3 款产 品都是一个单独服务或者进程,需要单独安装和运行,且对环境有一定依赖。其 中,MSMQ在非 Windows 平台下安装非常复杂,ActiveMQ 需要目标机器上已经 安装了 Java,RabbitMQ 需要 Erlang 环
11、境。而 ZeroMQ 是以库的形式存在,由 应用程序加载、运行即可。但是 ZeroMQ 仅提供非持久性的消息队列。下图是来自 Internet 的性能测试数据。显示的是每秒钟发送和接受的消息 数。整个过程共产生 1 百万条 1K 的消息,测试环境为 Windows Vista。从测试 数据可以看出,ZeroMQ的性能远远高于其它 3 个 MQ。分布式集群服务助手较成熟的非结构性数据库产品数据库结构松散的文本型数据库高性能的分布式内存对象缓存系统数据读写速度内存级别消息队列消息队列是一种应用程序对应用程序的通信方法应用程序通过写和检索出入列队的直接调用彼此来通信直接调用通常是用于诸如远程过程调用
12、的技术排队指的是应用程序通过队列来通信队列的使用除去了接和发送应用程序同时执行的要求一般情况下都需要有一个队列维护服务消息服务器在分布式系统各应用间消节进行抽象提供跨越多种传输协议的套接字是非典型的消息中间件而且更像是一个网络通信框架是网络通信中新的一层介于应用层和传输层之间按照划分其是一个可伸缩层可并行运行分散在分布式系统间号称是最快的消息队列系统 ZeroMQ优点:简单 1、仅仅提供 24 个 API 接口,风格类似于 BSD Socket。2、处理了网络异常,包括连接异常中断、重连等。3、改变 TCP基于字节流收发数据的方式,处理了粘包、半包等问题,以 msg 为 单位收发数据,结合 P
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 消息 队列 中转 软件 总结 汇编 计算机 数据结构 算法
限制150内