MQ(消息队列)学习

转自: http://book.51cto.com/art/201502/466288.htm         为何咱们须要MQ?安全

而这就是MQ :一个高效的可嵌入库,它解决了大部分应用程序须要解决的问题,变得在网络上有良好的可伸缩性,而没有多少成本。网络

具体作法是:数据结构

它在后台线程异步处理I/O。这些线程使用无锁数据结构与应用程序线程进行通讯,因此并发MQ 应用程序再也不须要锁、信号量,或其余等待状态。架构

组件能够动态地来去自如,而MQ 会自动从新链接。这意味着你能够以任何顺序启动组件。你能够建立“面向服务的架构”(SOA),其中的服务能够在任什么时候间加入和离开网络。并发

它根据须要自动对消息排队。为此,它会智能地在对消息排队以前,将消息尽量地推动到接收者。异步

它有一个处理过满队列(称为“高水位标志”)的方法。当队列满时,MQ 会自动阻止发件人,或丢弃消息,这取决于你正在作的是哪一种消息传递(即所谓的“模式”)。工具

它可让你的应用程序经过任意传输协议来互相交流,这些协议能够是:TCP、多播、进程内、进程间。你不须要更改代码以使用不一样的传输工具。线程

它使用依赖于消息传递模式的不一样策略,安全地处理速度慢/ 阻塞的读取者。代理

它可让你采用多种模式,如请求- 应答和发布- 订阅来将消息路由。这些模式是指你如何建立拓扑结构和网络结构。htm

它可让你建立代理(proxy)来排队、转发,或经过一个调用来捕获消息。代理能够下降网络互联的复杂性。

它使用在线路上的简单组帧原封不动地传递整个消息。若是你写了一个10KB 的消息,那么你将收到一个10KB 的消息。

它不对消息强加任何格式。它们是零字节到千兆字节的二进制大对象。当你想表示你的数据时,能够选择其上的其余一些产品,如谷歌的协议缓冲区、XDR 等。

它能智能地处理网络错误。有时候它会重试,有时它会告诉你某个操做失败。

它能够减小你的能源消耗。少花CPU 多办事意味着使用电脑更少的能源,你可让你的旧电脑使用更长的时间。戈尔(译者注:美国前副总统,环保主义者)也会爱上MQ 的。

      实际上,MQ 作的比这更多。它对你如何开发网络功能的应用程序有颠覆性的影响。从表面上看,这是一个在其上作zmq_msg_recv() 和zmq_msg_send() 的套接字风格的API。但该消息处理循环迅速成为中心循环,而你的应用程序很快就会分解成一组消息处理任务。它是优雅和天然的。并且,它可扩展:每一个任务 对应一个节点,节点经过任意传输方式互相交谈。在一个进程中的两个节点(节点是一个线程),在一台电脑中的两个节点(节点是一个进程),或一个网络上的两 台电脑(节点是一台电脑),全部的处理方式都是相同的,不须要更改应用程序代码。

相关文章
相关标签/搜索