zeromq 性能,zeromq集群

zeroMQ不是TCP、套接字,也不是消息队列,而是它们的综合体。

zeroMQ不是TCP、套接字,也不是消息队列,而是它们的综合体。

ZeroMQ

ZeroMQ是什么? ZeroMQ以嵌入式web编程库的形式实现了并行开发框架concurrency framework )。

可以提供进程内inproc )、进程间network )、广播方式的消息通道,

扇出、发行-支持订阅、任务分发、请求/响应等通信模式。

ZeroMQ的性能足以构建集群产品,

异步I/O模型为多核消息传递系统提供了足够的可扩展性。

ZeroMQ支持30多种语言的API,适用于大多数操作系统。

在提供这些优秀特性的同时,ZeroMQ是开源的,并符合LGPLv3许可证。

ZeroMQ的明确目标是“成为标准网络协议栈的一部分,然后进入Linux内核”。

Zero的禅The Zen of Zero ) ZeroMQ是一个很有个性的项目,其名称也符合禅的含义。

折衷。 虽然惹怒了一些丹麦人,但“”本身也降低了谷歌搜索的命中率,也降低了他们在推特上的关注度。 “零代理”、“零延迟”的目标是“零管理、零消耗、零浪费”的简单性。 力量的源泉是降低复杂性,而不是增加新功能ZeroMQ对soomq的响应

ZeroMQ的API提供了传统的套接字API封装,抽象到套接字类型、连接处理、帧和路由的基本细节。

使一组API可用于进程内通信、IPC、TCP和广播等多个消息通道。

ZeroMQ本身被定位为“智能传输层”The Intelligent Transport Layer ),位于网络层和APP应用层之间。

通过ZeroMQ,在构建大规模的同时APP应用时,可以自由地“组装”基本单元,ZeroMQ解决了通信的灵活伸缩,

ZeroMQ的这种设计大大简化了APP应用程序消息传递的实现,并允许在不同的场景中重用相同的交互模式。

使用ZeroMQ,创建高性能的网络APP应用程序非常简单有趣。

与套接字相比,ZeroMQ API的特点如下:

在后台线程中异步处理IO。 因为后台线程使用无需锁定的数据结构与APP应用程序线程进行通信,所以zero MQ APP应用程序不需要锁定、信号或其他等待状态。 组件可以动态添加和退出,ZeroMQ会自动重新连接。 这意味着可以按任何顺序启动组件。 可以创建“面向服务的体系结构”。 服务可以随时加入或退出网络。 在需要时自动将消息排队。 这个处理很智能,在排队之前尽量让消息接近收件人。 如何处理队列溢出“高水位标记”)。 队列满后,ZeroMQ会自动阻止发件人或销毁邮件。 这取决于您使用的消息传递类型模式)。 ZeroMQ允许APP通信使用传输端点相互交流。 TCP、多播、进程内、进程间。 如果使用不同的传输端点,则不需要更改代码。 根据消息传递模式,使用不同的策略安全地处理慢速/阻止收件人。 使用请求-响应、发布-订阅等多种模式路由消息。 这些模式定义了如何创建网络拓扑。 如果需要降低互连各部分之间的复杂性,可以将模式扩展的“设备”小代理)放在网络上。 通过在线路上使用简单的帧,可以准确地传达整个消息。 发送10K的信息后,会收到10K的信息。 不对消息格式做任何假设。 消息是一个从零到几GB的块。 高层需要使用其他产品表示数据,如谷歌的协议缓冲区和XDR。 智能处理网络错误。 有时重试,有时也会告诉操作失败。 控制能源消耗。 CPU时间越少,就能做得越多。 这意味着耗电量更低,旧机器可以使用更长的时间。 ZeroMQ的通信协议ZeroMQ定义了zmtp zeromqmessagetransportprotocol,ZeroMQ消息传输协议),它在TCP协议之上包含向后兼容性规则、可扩展的安全机制、

与其他消息传输协议/通信协议相比,ZeroMQ具有以下明显优势:

TCP:ZeroMQ基于消息,使用消息模式而不是字节流。 XMPP:ZeroMQ更简单、更快、更下层。 Jabber可以建在MQ上。 AMQP :完成相同的工作后,ZeroMQ会加快100倍。 此外,不需要代理。 规格更简洁,——比AMQP规格少278页) IPC:ZeroMQ可以在主机之间通信CORBA。 ZeroMQ不会把复杂可怕的消息格式强加给你。 RPC:ZeroMQ是完全异步的,可以随时添加/删除参与者。 RFC 1149:ZeroMQ比那个快多了! 29west LBM:ZeroMQ是免费软件! IBM Low-latency:ZeroMQ是自由软件! Tibco:ZeroMQ仍然是自由软件! ZeroMQ在摩尔定律而不是消息队列的魔法下,“分布式处理”逐渐成为主流,随之而来的是有关消息通信、消息中间件的项

目层出不穷。

其中最有名的应该是ZeroMQ和RabbitMQ,Thrift。
RabbitMQ是符合AMQPAdvanced Message Queuing Protocol, 高级消息队列协议)的消息中间件,
而Thrift是出自于Facebook的跨语言服务访问的框架。

2011年,欧洲核子研究组织(CERN)
调查了统一用于操作CERN加速器的中间件解决方案的方式,欧洲核子研究组织的研究比较了
CORBA、
Ice,
Thrift,
ZeroMQ,
YAMI4,
RTI和
Qpid/AMQP,
ZeroMQ得到了最高的分数。

但ZeroMQ最大的特点不在性能,而是机制。尽管名字中包含了”MQ”,但ZeroMQ并不是“消息队列/消息中间件”。ZeroMQ是一个传输层API库,
更关注消息的传输。与消息队列相比,ZeroMQ有以下一些特点:

1 点对点无中间节点

传统的消息队列都需要一个消息服务器来存储转发消息。而ZeroMQ则放弃了这个模式,把侧重点放在了点对点的消息传输上,并且(试图)做到极致。以为消息服务器最终还是转化为服务器对其他节点的点对点消息传输上。ZeroMQ能缓存消息,但是是在发送端缓存。ZeroMQ里有水位设置的相关接口来控制缓存量。当然,ZeroMQ也支持传统的消息队列(通过zmq_device来实现)。

2 强调消息收发模式

在点对点的消息传输上ZeroMQ将通信的模式做了归纳,比如常见的订阅模式(一个消息发多个客户),分发模式(N个消息平均分给X个客户)等等。下面是目前支持的消息模式配对,任何一方都可以做为服务端。

PUB and SUBREQ and REPREQ and XREPXREQ and REPXREQ and XREPXREQ and XREQXREP and XREPPUSH and PULLPAIR and PAIR

3 以统一接口支持多种底层通信方式

不管是线程间通信,进程间通信还是跨主机通信,ZeroMQ都使用同一套API进行调用,只需要更改通信协议名称(如,从”ipc:///xxx”改为”tcp://…

极速赛车7码口诀CP:ZeroMQ基于消息,使用消息模式而不是字节流。 XMPP:ZeroMQ更简单、更快、更下层。 Jabber可以建在MQ上。 AMQP :完成相同的工作后,ZeroMQ会加快100倍。 此外,不需要代理。 规格更简洁,——比AMQP规格少278页) IPC:ZeroMQ可以在主机之间通信CORBA。 ZeroMQ不会把复杂可怕的消息格式强加给你。 RPC:ZeroMQ是完全异步的,可以随时添加/删除参与者。 RFC 1149:ZeroMQ比那个快多了! 29west LBM:ZeroMQ是免费软件! IBM Low-latency:ZeroMQ是自由软件! Tibco:ZeroMQ仍然是自由软件! ZeroMQ在摩尔定律而不是消息队列的魔法下,“分布式处理”逐渐成为主流,随之而来的是有关消息通信、消息中间件的项

目层出不穷。

其中最有名的应该是ZeroMQ和RabbitMQ,Thrift。
RabbitMQ是符合AMQPAdvanced Message Queuing Protocol, 高级消息队列协议)的消息中间件,
而Thrift是出自于Facebook的跨语言服务访问的框架。

2011年,欧洲核子研究组织(CERN)
调查了统一用于操作CERN加速器的中间件解决方案的方式,欧洲核子研究组织的研究比较了
CORBA、
Ice,
Thrift,
ZeroMQ,
YAMI4,
RTI和
Qpid/AMQP,
ZeroMQ得到了最高的分数。

但ZeroMQ最大的特点不在性能,而是机制。尽管名字中包含了”MQ”,但ZeroMQ并不是“消息队列/消息中间件”。ZeroMQ是一个传输层API库,
更关注消息的传输。与消息队列相比,ZeroMQ有以下一些特点:

1 点对点无中间节点

传统的消息队列都需要一个消息服务器来存储转发消息。而ZeroMQ则放弃了这个模式,把侧重点放在了点对点的消息传输上,并且(试图)做到极致。以为消息服务器最终还是转化为服务器对其他节点的点对点消息传输上。ZeroMQ能缓存消息,但是是在发送端缓存。ZeroMQ里有水位设置的相关接口来控制缓存量。当然,ZeroMQ也支持传统的消息队列(通过zmq_device来实现)。

2 强调消息收发模式

在点对点的消息传输上ZeroMQ将通信的模式做了归纳,比如常见的订阅模式(一个消息发多个客户),分发模式(N个消息平均分给X个客户)等等。下面是目前支持的消息模式配对,任何一方都可以做为服务端。

PUB and SUBREQ and REPREQ and XREPXREQ and REPXREQ and XREPXREQ and XREQXREP and XREPPUSH and PULLPAIR and PAIR

3 以统一接口支持多种底层通信方式

不管是线程间通信,进程间通信还是跨主机通信,ZeroMQ都使用同一套API进行调用,只需要更改通信协议名称(如,从”ipc:///xxx”改为”tcp://…

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注