文档章节

ZeroMQ简介

异类深呼吸
 异类深呼吸
发布于 2014/05/22 20:28
字数 2415
阅读 469
收藏 4
点赞 0
评论 1

<p style="box-sizing: border-box; margin: 0px 0px 15px; padding: 0px; color: #333333; font-family: 'Source Sans Pro', sans-serif; line-height: 24px;">看到salt中介绍底层使用了zeroMQ,很多人看到salt,却没有多少人关注这个,看到一篇文章,觉得非常有用,转载而来,</p> <p style="box-sizing: border-box; margin: 0px 0px 15px; padding: 0px; color: #333333; font-family: 'Source Sans Pro', sans-serif; line-height: 24px;">文章来源:<a href="http://thinkinside.tk/2013/07/03/zeromq_intro.html">http://thinkinside.tk/2013/07/03/zeromq_intro.html</a> ,不过目前链接好像失效了</p> <p style="box-sizing: border-box; margin: 0px 0px 15px; padding: 0px; color: #333333; font-family: 'Source Sans Pro', sans-serif; line-height: 24px;">zeroMQ不是TCP,不是socket,也不是消息队列,而是这些的综合体。</p> <p style="box-sizing: border-box; margin: 0px 0px 15px; padding: 0px; color: #333333; font-family: 'Source Sans Pro', sans-serif; line-height: 24px;"><img title="NewImage.png" src="http://static.oschina.net/uploads/img/201405/26141204_XIlH.png" alt="NewImage" width="417" height="153" border="0" /></p> <h1 style="box-sizing: border-box; margin: 0px 0px 15px; padding: 0px; color: #333333; font-family: 'Source Sans Pro', sans-serif;">ZeroMQ是什么</h1> <p style="box-sizing: border-box; margin: 0px 0px 15px; padding: 0px; color: #333333; font-family: 'Source Sans Pro', sans-serif; line-height: 24px;"><a style="box-sizing: border-box; margin: 0px; padding: 0px; color: #0971b2; text-decoration: none;" href="http://www.zeromq.org/">ZeroMQ</a>以嵌入式网络编程库的形式实现了一个并行开发框架(concurrency framework), 能够提供进程内(inproc)、进程间(IPC)、网络(TCP)和广播方式的消息信道, 并支持扇出(fan-out)、发布-订阅(pub-sub)、任务分发(task distribution)、请求/响应(request-reply)等通信模式。 ZeroMQ的性能足以用来构建集群产品, 其异步I/O模型能够为多核消息系统提供足够的扩展性。 ZeroMQ支持30多种语言的API,可以用于绝大多数操作系统。 在提供这些优秀特性的同时,ZeroMQ是开源的,遵循LGPLv3许可。</p> <p style="box-sizing: border-box; margin: 0px 0px 15px; padding: 0px; color: #333333; font-family: 'Source Sans Pro', sans-serif; line-height: 24px;">ZeroMQ的明确目标是“成为标准网络协议栈的一部分,之后进入Linux内核”。</p> <h1 style="box-sizing: border-box; margin: 0px 0px 15px; padding: 0px; color: #333333; font-family: 'Source Sans Pro', sans-serif;">Zero 之禅(The Zen of Zero)</h1> <p style="box-sizing: border-box; margin: 0px 0px 15px; padding: 0px; color: #333333; font-family: 'Source Sans Pro', sans-serif; line-height: 24px;">ZeroMQ是一个很有个性的项目,其名称也暗合禅意:</p> <ul style="box-sizing: border-box; margin: 0px 0px 15px 40px; padding: 0px; color: #333333; font-family: 'Source Sans Pro', sans-serif; line-height: 24px;"> <li style="box-sizing: border-box; margin: 0px; padding: 0px;">Ø 是一种权衡:让一些丹麦人恼火,但是“Ø”本身也降低了google搜索的命中率以及twitter上的关注度</li> <li style="box-sizing: border-box; margin: 0px; padding: 0px;">Ø 暗合“零代理(broker)”、“零延迟”</li> <li style="box-sizing: border-box; margin: 0px; padding: 0px;">Ø 的目标是“零管理、零消耗、零浪费”</li> <li style="box-sizing: border-box; margin: 0px; padding: 0px;">Ø 符合简约主义:力量的源泉是降低复杂度,而不是增加新功能</li> </ul> <h1 style="box-sizing: border-box; margin: 0px 0px 15px; padding: 0px; color: #333333; font-family: 'Source Sans Pro', sans-serif;">ZeroMQ对socket API的封装</h1> <p style="box-sizing: border-box; margin: 0px 0px 15px; padding: 0px; color: #333333; font-family: 'Source Sans Pro', sans-serif; line-height: 24px;">与libevent, ACE等项目不同,使用ZeroMQ时可以不关注网络细节。 ZeroMQ的API提供了对于传统socket API的封装,对于套接字类型、连接处理、帧、甚至路由的底层细节都进行了抽象, 使得一套API可以用于进程内通讯、IPC、TCP和广播等多种消息信道。</p> <p style="box-sizing: border-box; margin: 0px 0px 15px; padding: 0px; color: #333333; font-family: 'Source Sans Pro', sans-serif; line-height: 24px;">ZeroMQ自己定位为“智能传输层”(The Intelligent Transport Layer),位于网络层和应用层之间。 ZeroMQ使得构建大型并发应用时,可以将基本单元随意的“组装”,由ZeroMQ解决通信的弹性伸缩,</p> <p style="box-sizing: border-box; margin: 0px 0px 15px; padding: 0px; color: #333333; font-family: 'Source Sans Pro', sans-serif; line-height: 24px;">ZeroMQ的这种设计大大简化了应用程序消息通信的实现,使得在多种场景下重用相同的交互模式成为可能。 使用ZeroMQ可以让编写高性能网络应用程序极为简单和有趣。</p> <p style="box-sizing: border-box; margin: 0px 0px 15px; padding: 0px; color: #333333; font-family: 'Source Sans Pro', sans-serif; line-height: 24px;">与socket相比,ZeroMQ API的特征如下:</p> <ul style="box-sizing: border-box; margin: 0px 0px 15px 40px; padding: 0px; color: #333333; font-family: 'Source Sans Pro', sans-serif; line-height: 24px;"> <li style="box-sizing: border-box; margin: 0px; padding: 0px;">在后台线程中异步地处理IO。后台线程使用无需锁的数据结构与应用线程通信,所以ZeroMQ应用程序不需要锁、信号量,或者其他等待状态。</li> <li style="box-sizing: border-box; margin: 0px; padding: 0px;">组件可以动态地加入和退出,ZeroMQ会自动重新连接。这意味着可以以任何次序启动组件。可以创建“面向服务架构(service-oriented architectures)”,其中的服务可以在任何时候加入或者退出网络。</li> <li style="box-sizing: border-box; margin: 0px; padding: 0px;">在需要的时候自动对消息排队。这种处理是智能的,在排队前会尽量让消息靠近接收者。</li> <li style="box-sizing: border-box; margin: 0px; padding: 0px;">有处理队列溢出的方法(“高水位标记”)。队列满的时候,ZeroMQ会自动阻塞发送者,或者丢弃消息,取决于你正在使用的消息传递类型(模式)。</li> <li style="box-sizing: border-box; margin: 0px; padding: 0px;">ZeroMQ让应用程序可以使用传输端点相互交流:TCP、多播、进程内、进程间。使用不同的传输端点时不用修改代码。</li> <li style="box-sizing: border-box; margin: 0px; padding: 0px;">根据消息传递模式的不同,使用不同的策略来安全地处理慢速/阻塞的接收者。</li> <li style="box-sizing: border-box; margin: 0px; padding: 0px;">使用请求-应答、发布-订阅等多种模式来路由消息。这些模式定义了如何创建网络拓扑结构。</li> <li style="box-sizing: border-box; margin: 0px; padding: 0px;">需要降低互联的各部分间的复杂性的时候,可以在网络中放置模式扩展的“设备”(小的代理)。</li> <li style="box-sizing: border-box; margin: 0px; padding: 0px;">通过在线路中使用简单的帧,可以精确地传递整个消息。发送10K的消息,则会收到10K的消息。</li> <li style="box-sizing: border-box; margin: 0px; padding: 0px;">不对消息格式做任何假定。消息是从零到数G字节的块。需要在高层使用其他产品来表示数据,如Google的Protocol Buffers、XDR等等。</li> <li style="box-sizing: border-box; margin: 0px; padding: 0px;">智能地处理网络错误。有时候重试,有时候告诉你操作失败。</li> <li style="box-sizing: border-box; margin: 0px; padding: 0px;">降低能耗。使用较少的CPU时间来做更多事情意味着使用更少的能源,而且较老的机器可以使用更长的时间。</li> </ul> <h1 style="box-sizing: border-box; margin: 0px 0px 15px; padding: 0px; color: #333333; font-family: 'Source Sans Pro', sans-serif;">ZeroMQ的通信协议</h1> <p style="box-sizing: border-box; margin: 0px 0px 15px; padding: 0px; color: #333333; font-family: 'Source Sans Pro', sans-serif; line-height: 24px;">ZeroMQ定义了<a style="box-sizing: border-box; margin: 0px; padding: 0px; color: #0971b2; text-decoration: none;" href="http://rfc.zeromq.org/spec:13">ZMTP(ZeroMQ Message Transport Protocol, ZeroMQ消息传输协议)</a>,在TCP协议之上定义了向后兼容性的规则,可扩展的安全机制,命令和消息分帧,连接元数据,以及其他传输层功能。</p> <p style="box-sizing: border-box; margin: 0px 0px 15px; padding: 0px; color: #333333; font-family: 'Source Sans Pro', sans-serif; line-height: 24px;">相对于其他的消息传输协议/通信协议,ZeroMQ有明显的优势:</p> <ul style="box-sizing: border-box; margin: 0px 0px 15px 40px; padding: 0px; color: #333333; font-family: 'Source Sans Pro', sans-serif; line-height: 24px;"> <li style="box-sizing: border-box; margin: 0px; padding: 0px;">TCP:ZeroMQ基于消息,使用消息模式而不是字节流。</li> <li style="box-sizing: border-box; margin: 0px; padding: 0px;">XMPP:ZeroMQ更简单、快速、更底层。Jabber可建在ØMQ之上。</li> <li style="box-sizing: border-box; margin: 0px; padding: 0px;">AMQP:完成相同的工作,ZeroMQ要快100倍,而且不需要代理(规范更简洁——比AMQP的规范文档少278页)</li> <li style="box-sizing: border-box; margin: 0px; padding: 0px;">IPC:ZeroMQ可以跨主机通信</li> <li style="box-sizing: border-box; margin: 0px; padding: 0px;">CORBA:ZeroMQ不会将复杂到恐怖的消息格式强加于你。</li> <li style="box-sizing: border-box; margin: 0px; padding: 0px;">RPC:ZeroMQ完全是异步的,你可以随时增加/删除参与者。</li> <li style="box-sizing: border-box; margin: 0px; padding: 0px;"><a style="box-sizing: border-box; margin: 0px; padding: 0px; color: #0971b2; text-decoration: none;" href="http://www.faqs.org/rfcs/rfc1149.html">RFC 1149</a>:ZeroMQ比它快多了!</li> <li style="box-sizing: border-box; margin: 0px; padding: 0px;">29west LBM:ZeroMQ是自由软件!</li> <li style="box-sizing: border-box; margin: 0px; padding: 0px;">IBM Low-latency:ZeroMQ是自由软件!</li> <li style="box-sizing: border-box; margin: 0px; padding: 0px;">Tibco:ZeroMQ仍然是自由软件!</li> </ul> <h1 style="box-sizing: border-box; margin: 0px 0px 15px; padding: 0px; color: #333333; font-family: 'Source Sans Pro', sans-serif;">ZeroMQ不是消息队列</h1> <p style="box-sizing: border-box; margin: 0px 0px 15px; padding: 0px; color: #333333; font-family: 'Source Sans Pro', sans-serif; line-height: 24px;">在摩尔定律的魔咒下,“分布式处理”逐渐成为主流,随之而来的是关于消息通讯、消息中间件的项目层出不穷。</p> <p style="box-sizing: border-box; margin: 0px 0px 15px; padding: 0px; color: #333333; font-family: 'Source Sans Pro', sans-serif; line-height: 24px;">其中最有名的应该是ZeroMQ和RabbitMQ,Thrift。 <a style="box-sizing: border-box; margin: 0px; padding: 0px; color: #0971b2; text-decoration: none;" href="http://www.rabbitmq.com/">RabbitMQ</a>是符合<a style="box-sizing: border-box; margin: 0px; padding: 0px; color: #0971b2; text-decoration: none;" href="http://www.amqp.org/">AMQP(Advanced Message Queuing Protocol, 高级消息队列协议)</a>的消息中间件, 而<a style="box-sizing: border-box; margin: 0px; padding: 0px; color: #0971b2; text-decoration: none;" href="http://thrift.apache.org/">Thrift</a>是出自于Facebook的跨语言服务访问的框架。</p> <p style="box-sizing: border-box; margin: 0px 0px 15px; padding: 0px; color: #333333; font-family: 'Source Sans Pro', sans-serif; line-height: 24px;">2011年,<a style="box-sizing: border-box; margin: 0px; padding: 0px; color: #0971b2; text-decoration: none;" href="http://zh.wikipedia.org/wiki/%E6%AD%90%E6%B4%B2%E6%A0%B8%E5%AD%90%E7%A0%94%E7%A9%B6%E7%B5%84%E7%B9%94">欧洲核子研究组织(CERN)</a> 调查了统一用于操作CERN加速器的中间件解决方案的方式,欧洲核子研究组织的研究比较了 <a style="box-sizing: border-box; margin: 0px; padding: 0px; color: #0971b2; text-decoration: none;" href="http://zh.wikipedia.org/wiki/CORBA">CORBA</a>、 <a style="box-sizing: border-box; margin: 0px; padding: 0px; color: #0971b2; text-decoration: none;" href="http://zh.wikipedia.org/w/index.php?title=Internet_Communications_Engine&amp;action=edit&amp;redlink=1">Ice</a>, <a style="box-sizing: border-box; margin: 0px; padding: 0px; color: #0971b2; text-decoration: none;" href="http://zh.wikipedia.org/w/index.php?title=Apache_Thrift&amp;action=edit&amp;redlink=1">Thrift</a>, ZeroMQ, YAMI4,<a style="box-sizing: border-box; margin: 0px; padding: 0px; color: #0971b2; text-decoration: none;" href="http://zh.wikipedia.org/w/index.php?title=Run-Time_Infrastructure_(simulation">RTI</a>&amp;action=edit&amp;redlink=1)和 <a style="box-sizing: border-box; margin: 0px; padding: 0px; color: #0971b2; text-decoration: none;" href="http://zh.wikipedia.org/w/index.php?title=Apache_Qpid&amp;action=edit&amp;redlink=1">Qpid/AMQP</a>, ZeroMQ得到了最高的分数。</p> <p style="box-sizing: border-box; margin: 0px 0px 15px; padding: 0px; color: #333333; font-family: 'Source Sans Pro', sans-serif; line-height: 24px;">但ZeroMQ最大的特点不在性能,而是机制。尽管名字中包含了"MQ",但ZeroMQ并不是“消息队列/消息中间件”。ZeroMQ是一个传输层API库, 更关注消息的传输。与消息队列相比,ZeroMQ有以下一些特点:</p> <p style="box-sizing: border-box; margin: 0px 0px 15px; padding: 0px; color: #333333; font-family: 'Source Sans Pro', sans-serif; line-height: 24px;">1 点对点无中间节点</p> <p style="box-sizing: border-box; margin: 0px 0px 15px; padding: 0px; color: #333333; font-family: 'Source Sans Pro', sans-serif; line-height: 24px;">传统的消息队列都需要一个消息服务器来存储转发消息。而ZeroMQ则放弃了这个模式,把侧重点放在了点对点的消息传输上,并且(试图)做到极致。以为消息服务器最终还是转化为服务器对其他节点的点对点消息传输上。ZeroMQ能缓存消息,但是是在发送端缓存。ZeroMQ里有水位设置的相关接口来控制缓存量。当然,ZeroMQ也支持传统的消息队列(通过zmq_device来实现)。</p> <p style="box-sizing: border-box; margin: 0px 0px 15px; padding: 0px; color: #333333; font-family: 'Source Sans Pro', sans-serif; line-height: 24px;">2 强调消息收发模式</p> <p style="box-sizing: border-box; margin: 0px 0px 15px; padding: 0px; color: #333333; font-family: 'Source Sans Pro', sans-serif; line-height: 24px;">在点对点的消息传输上ZeroMQ将通信的模式做了归纳,比如常见的订阅模式(一个消息发多个客户),分发模式(N个消息平均分给X个客户)等等。下面是目前支持的消息模式配对,任何一方都可以做为服务端。 - PUB and SUB - REQ and REP - REQ and XREP - XREQ and REP - XREQ and XREP - XREQ and XREQ - XREP and XREP - PUSH and PULL - PAIR and PAIR</p> <p style="box-sizing: border-box; margin: 0px 0px 15px; padding: 0px; color: #333333; font-family: 'Source Sans Pro', sans-serif; line-height: 24px;">3 以统一接口支持多种底层通信方式</p> <p style="box-sizing: border-box; margin: 0px 0px 15px; padding: 0px; color: #333333; font-family: 'Source Sans Pro', sans-serif; line-height: 24px;">不管是线程间通信,进程间通信还是跨主机通信,ZeroMQ都使用同一套API进行调用,只需要更改通信协议名称(如,从"ipc:///xxx"改为"tcp://<em style="box-sizing: border-box; margin: 0px; padding: 0px;">.</em>.<em style="box-sizing: border-box; margin: 0px; padding: 0px;">.</em>:****")即可。</p> <p style="box-sizing: border-box; margin: 0px 0px 15px; padding: 0px; color: #333333; font-family: 'Source Sans Pro', sans-serif; line-height: 24px;">4 异步,强调性能</p> <p style="box-sizing: border-box; margin: 0px 0px 15px; padding: 0px; color: #333333; font-family: 'Source Sans Pro', sans-serif; line-height: 24px;">ZeroMQ设计之初就是为了高性能的消息发送而服务的,所以其设计追求简洁高效。它发送消息是异步模式,通过单独出一个IO线程来实现,所以消息发送调用之后不要立刻释放相关资源哦,会出错的(以为还没发送完),要把资源释放函数交给ZeroMQ让ZeroMQ发完消息自己释放。</p> <h1 style="box-sizing: border-box; margin: 0px 0px 15px; padding: 0px; color: #333333; font-family: 'Source Sans Pro', sans-serif;">ZeroMQ的应用案例</h1> <p style="box-sizing: border-box; margin: 0px 0px 15px; padding: 0px; color: #333333; font-family: 'Source Sans Pro', sans-serif; line-height: 24px;">ZeroMQ如何拯救世界</p> <p style="box-sizing: border-box; margin: 0px 0px 15px; padding: 0px; color: #333333; font-family: 'Source Sans Pro', sans-serif; line-height: 24px;">由于ZeroMQ的强大,我们可以用ZeroMQ搭建出非常强悍的应用。比如:</p> <ul style="box-sizing: border-box; margin: 0px 0px 15px 40px; padding: 0px; color: #333333; font-family: 'Source Sans Pro', sans-serif; line-height: 24px;"> <li style="box-sizing: border-box; margin: 0px; padding: 0px;"><a style="box-sizing: border-box; margin: 0px; padding: 0px; color: #0971b2; text-decoration: none;" href="http://thinkinside.tk/2013/06/24/salt_intro.html">Salt</a>的底层就使用了ZeroMQ作为通信机制</li> <li style="box-sizing: border-box; margin: 0px; padding: 0px;"> <p style="box-sizing: border-box; margin: 0px 0px 15px; padding: 0px;"><a style="box-sizing: border-box; margin: 0px; padding: 0px; color: #0971b2; text-decoration: none;" href="http://mongrel2.org/home">Mongrel2</a>是使用ZeroMQ开发的一个Web服务器</p> <p style="box-sizing: border-box; margin: 0px 0px 15px; padding: 0px;">Mongrel2是应用ZeroMQ的一个有趣的案例:所有入站消息通过“Push”套接字路由到Mongrel2,套接字可以自动实现负载均衡,将消息分发到连接处理器。反过来,连接处理器处理入站消息(通过Pull套接字),然后将处理结果发布到一个“Pub”套接字,Mongrel2服务器本身已订阅了该套接字,并且通过主题(topic)过滤器监听该套接字的进程号。如下图:</p> <p style="box-sizing: border-box; margin: 0px 0px 15px; padding: 0px;"><img title="NewImage.png" src="http://static.oschina.net/uploads/img/201405/26141205_5vP8.png" alt="NewImage" width="273" height="388" border="0" /></p> </li> </ul> <p style="box-sizing: border-box; margin: 0px 0px 15px; padding: 0px; color: #333333; font-family: 'Source Sans Pro', sans-serif; line-height: 24px;">ZeroMQ带来了一种新的分布式应用架构的思考方式。善用ZeroMQ,可以为应用带来非常强大的特性。</p> <h1 style="box-sizing: border-box; margin: 0px 0px 15px; padding: 0px; color: #333333; font-family: 'Source Sans Pro', sans-serif;">参考资料</h1> <ul style="box-sizing: border-box; margin: 0px 0px 15px 40px; padding: 0px; color: #333333; font-family: 'Source Sans Pro', sans-serif; line-height: 24px;"> <li style="box-sizing: border-box; margin: 0px; padding: 0px;"><a style="box-sizing: border-box; margin: 0px; padding: 0px; color: #0971b2; text-decoration: none;" href="http://zguide.zeromq.org/page:all">官方指南</a>,这篇巨长的文档不仅介绍了ZeroMQ的主要方面,网络编程,还融入了ZeroMQ作者对于编程的理念,很值得精读</li> <li style="box-sizing: border-box; margin: 0px; padding: 0px;"><a style="box-sizing: border-box; margin: 0px; padding: 0px; color: #0971b2; text-decoration: none;" href="http://www.infoq.com/news/2010/09/introduction-zero-mq">An Introduction to ØMQ (ZeroMQ)</a>,InfoQ上面对于ZeroMQ的一篇介绍性文章</li> <li style="box-sizing: border-box; margin: 0px; padding: 0px;"><a style="box-sizing: border-box; margin: 0px; padding: 0px; color: #0971b2; text-decoration: none;" href="http://www.zeromq.org/community">ZeroMQ社区</a>,</li> <li style="box-sizing: border-box; margin: 0px; padding: 0px;"><a style="box-sizing: border-box; margin: 0px; padding: 0px; color: #0971b2; text-decoration: none;" href="http://hi.baidu.com/ah__fu/item/bdff1d88d236f8c299255f65">ZeroMQ:云计算时代最好的通讯库</a></li> <li style="box-sizing: border-box; margin: 0px; padding: 0px;"><a style="box-sizing: border-box; margin: 0px; padding: 0px; color: #0971b2; text-decoration: none;" href="http://blog.codingnow.com/2011/02/zeromq_message_patterns.html">ZeroMQ 的模式</a></li> </ul>

本文转载自:http://thinkinside.tk/2013/07/03/zeromq_intro.html

共有 人打赏支持
异类深呼吸
粉丝 5
博文 46
码字总数 42368
作品 0
朝阳
系统管理员
加载中

评论(1)

wier
wier
什么玩意都,标签都不处理一下
rabbitMQ、activeMQ、zeroMQ、Kafka、Redis 比较

Kafka作为时下最流行的开源消息系统,被广泛地应用在数据缓冲、异步通信、汇集日志、系统解耦等方面。相比较于RocketMQ等其他常见消息系统,Kafka在保障了大部分功能特性的同时,还提供了超一...

xumaojun ⋅ 05/06 ⋅ 0

干货| 架构师入门实战视频课程(二) 第二弹

《架构师入门实战视频课程》 前面第一篇的已经发布了一些,不了解的可以查看之前的文章,下载相关的资源 今天更新第二波, 废话不多说,直接上干货吧 注微信公众号,回复相关代码,即可获得相...

章为忠 ⋅ 04/18 ⋅ 0

ZeroMQ一次send较大的数据,如何获取其传输进度?

ZeroMQ一次send较大的数据,如何获取其传输进度?(ZMQ_REQ模式下)万分感谢!

casinozyz ⋅ 05/27 ⋅ 0

使用SALT-SSH安装SALT-MINION

alt-ssh 是 0.17.0 新出现的一个功能,它是依赖 ssh 来进行远程命令执行的工具,好处就是不需要在客户端安装 minion,也不需要安装 master(直接安装 salt-ssh 这个包即可),有些时候你还真...

yzy121403725 ⋅ 05/14 ⋅ 0

用redis实现消息队列(实时消费+ack机制)

消息队列 首先做简单的引入。 MQ主要是用来: 解耦应用、 异步化消息 流量削峰填谷 目前使用的较多的有ActiveMQ、RabbitMQ、ZeroMQ、Kafka、MetaMQ、RocketMQ等。 网上的资源对各种情况都有详...

美的让人心动 ⋅ 05/03 ⋅ 0

Origination unknown

@zhulint 你好,想跟你请教个问题: [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] Origination unknown: [10228][11541][4.13.127] 在装入驱动程序时发生了安全性异常。 ERRORCODE=...

敏哥喜欢吃辣条 ⋅ 01/24 ⋅ 0

大数据Storm相比于Spark、Hadoop有哪些优势(摘录)

一、可能很多初学大数据的伙伴不知道strom是什么,先给大家介绍一下strom: 分布式实时计算系统,storm对于实时计算的意义类似于hadoop对于批处理的意义。 storm的适用场景。 流数据处理。S...

风火数据 ⋅ 06/01 ⋅ 0

SQL Server中的密码处理函数pwdencrypt和pwdcompare

摘自论坛: declare @pwdsave varbinary(256) set @pwdsave=pwdencrypt( 'abc ') -- 设置密码(加密) if pwdcompare( 'abc ', @pwdsave, 0) =1 -- 判断输入的密码是否与设置的密码一样 print ......

余二五 ⋅ 2017/11/08 ⋅ 0

浅谈开源Kafka与腾讯云cKafka

今天下午参加了腾讯云+社区组织的kafka公开课,收获良多。正巧在工作中也遇到过kafka的问题,今天听完之后产生了非常多的感想。无奈篇幅有限,本人又文笔愚钝,所以今天的分享主要提及对我感...

老张的技术 ⋅ 06/19 ⋅ 0

IM系统的MQ消息中间件选型:Kafka还是RabbitMQ?

1、前言 在IM这种讲究高并发、高消息吞吐的互联网场景下,MQ消息中间件是个很重要的基础设施,它在IM系统的服务端架构中担当消息中转、消息削峰、消息交换异步化等等角色,当然MQ消息中间件的...

JackJiang2011 ⋅ 06/12 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Kubeflow实战系列:利用TFJob导出分布式TensorFlow模型

介绍 本系列将介绍如何在阿里云容器服务上运行Kubeflow, 本文介绍如何使用TfJob导出分布式模型训练模型。 第一篇:阿里云上使用JupyterHub 第二篇:阿里云上小试TFJob 第三篇:利用TFJob运行...

全部原谅 ⋅ 1分钟前 ⋅ 0

007. 深入JVM学习—老年代

老年代空间的主要目的是用于存储由Eden发送来的对象,一般在经历好几次“Minor GC”还会保存下来的对象,才会被复制到老年代,这样就可以存放更多的对象,同时在老年代中执行GC的次数也相对较...

影狼 ⋅ 2分钟前 ⋅ 0

常见的一些C#开源框架或者开源项目

原:https://blog.csdn.net/qq_27825451/article/details/70666044 Json.NET http://json.codeplex.com/ Json.Net 是一个读写Json效率比较高的.Net框架.Json.Net 使得在.Net环境下使用Json更......

whoisliang ⋅ 3分钟前 ⋅ 0

设计模式基本原理

刚开始接触编程这行的时候看过设计模式,当时感觉学这些模式没有太大的用处,当时也看不太懂。但是随着慢慢接触这一行,经过一段时间的编程以后,再回过头来看设计模式,发现设计模式的确是太...

王子城 ⋅ 6分钟前 ⋅ 0

阿里云全面支持IPv6!一文揽尽4位大咖精彩演讲

摘要: 自从去年11月以来,阿里巴巴高度重视数据中心的网络改造、云产品改造、应用及网络改造等多个维度,经过半年以来的建设,阿里云已经完成了域名解析等关键产品的分析,现在阿里云已经完...

传授知识的天使 ⋅ 17分钟前 ⋅ 0

windows Android sdk 配置

1、下载Android SDK,点击安装,直接默认路径即可! 下载地址:http://developer.android.com/sdk/index.html 2、默认路径安装后,安装完成,开始配置环境变量。 3、打开计算机属性——高级系...

阿豪boy ⋅ 20分钟前 ⋅ 0

bash shell script 简明教程

User <--> bash <--> kernel shell is not kernel or part of kernel various shells: tcsh, csh, bash, ksh find the using shell: echo $SHELL find all the shells: cat /etc/shells what......

mskk ⋅ 22分钟前 ⋅ 0

Service Mesh简史

William Morgan Service Mesh是一个相当新的概念,讲它的“历史”似乎有些勉强。就目前而言,Service Mesh已经在部分企业生产环境中运行了超过18个月,它的源头可以追溯到2010年前后互联网公...

好雨云帮 ⋅ 22分钟前 ⋅ 0

10个免费的服务器监控工具

监控你的WEB服务器或者WEB主机运行是否正常与健康是非常重要的。你要确保用户始终可以打开你的网站并且网速不慢。服务器监控工具允许你收集和分析有关你的Web服务器的数据。 有许多非常好的服...

李朝强 ⋅ 35分钟前 ⋅ 0

压缩工具之zip-tar

zip 支持目录压缩。使用yum安装zip包,使用yum安装unzip包 zip 1.txt.zip 1.txt #将1.txt文件压缩,新生成的压缩文件为1.txt.zip,原文件保留 zip -r 123.zip 123/ #-r对目录操作。将123/目录...

ZHENG-JY ⋅ 35分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部