文档章节

ZeroMQ简介

异类深呼吸
 异类深呼吸
发布于 2014/05/22 20:28
字数 2415
阅读 476
收藏 4

<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
什么玩意都,标签都不处理一下
高性能的通讯库-zeroMQ的几个高性能特征

这两天研究了一下zeroMQ,号称史上最好的通讯库,比rabbitMQ快很多,基于c语言开发的,实时流处理sorm的task之间的通信就是用的zeroMQ。 zeroMQ在使用模式上支持多种,有req-reply,publish...

天下杰论
2014/10/08
0
0
ZeroMQ学习:window下编译zeromq-3.2.3和jzmq-master

最近发现公司项目中用的activemq队列总出现这样那样的问题,可能没有相关告诉解决,很是头疼。作为个人来说也很想寻找一款跨语言、高速的消息队列“玩一玩”,发现zeromq比较满足这个要求。 ...

DEC_LIU
2013/09/05
0
0
hadoop+kafka+strom+flume第一步

1、所有主机需要安装JDK,并配置JDK环境变量 2、所有主机安装SSH,并相互间实现无密访问 3、修改主机hosts :文件/etc/hosts,保证各机器通过机器名可以互访 4、安装python 2.6及以上(storm...

晨磊
2015/07/20
0
0
Twitter Storm集群搭建小结

最近自己尝试搭建了一下Twitter Storm的集群,参考了很多网友的博客,特别是徐明明的;这里只对自己搭建时的过程和所遇到的问题做一个小总结,方便查阅。 Storm是Twitter开源的一个实时计算框...

Breath_L
2012/10/21
0
4
谁才是最快的消息队列:ActiveMQ, RabbitMQ, HornetQ, QPID...

Lately I performed a message queue benchmark, comparing several queuing frameworks (RabbitMQ, ActiveMQ…). Those benchmarks are part of a complete study conducted by Adina Mihai......

ZooKeeper
2013/12/22
0
1

没有更多内容

加载失败,请刷新页面

加载更多

redis 系列一 -- 简介及安装

1.简介 redis -- remote dictionary server 远程字典服务 使用 C 语言编写; 高性能的 key-value数据库; 内存数据库,支持数据持久化。 Redis 是一个开源(BSD许可)的,内存中的数据结构存...

imbiao
31分钟前
1
0
nginx log记录请求响应时间

有时为了方便分析接口性能等,需要记录请求的时长,通过修改nginx的日志格式可以做到,如 添加一个新的log_format log_format timed_combined '$remote_addr - $remote_user [$time_local] "...

swingcoder
54分钟前
2
0
Spring MVC之RequestMappingHandlerMapping匹配

对于RequestMappingHandlerMapping,使用Spring的同学基本都不会陌生,该类的作用有两个: 通过request查找对应的HandlerMethod,即当前request具体是由Controller中的哪个方法进行处理; 查...

爱宝贝丶
58分钟前
2
0
Java Web--增删改查之二界面后台java代码(转载参考)

/** *  *//** * @author Administrator * */package dao; import java.sql.*;public class DBConn {/** * 链接数据库 * @return */  ...

小橙子的曼曼
今天
2
0
Redis源码阅读笔记-对象及其类型和编码

总结之《Redis设计与实现》 对象 Redis中是使用对象来便是数据库中的键和值。 结构 // server.h...#define LRU_BITS 24...typedef struct redisObject { unsigned type:4; ...

Jian_Ming
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部