zoukankan      html  css  js  c++  java
  • MQ(消息队列)学习

    转自: http://book.51cto.com/art/201502/466288.htm         为什么我们需要MQ?

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

    具体做法是:

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

    组件可以动态地来去自如,而MQ 会自动重新连接。这意味着你可以以任何顺序启动组件。你可以创建“面向服务的架构”(SOA),其中的服务可以在任何时间加入和离开网络。

    它根据需要自动对消息排队。为此,它会智能地在对消息排队之前,将消息尽可能地推进到接收者。

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

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

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

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

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

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

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

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

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

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

    态度决定行为,行为决定习惯,习惯决定性格,性格决定命运
  • 相关阅读:
    设计模式之原型模式
    【转载】 吵翻了!这张图里到底是人还是狗?心理学家这样说
    【转载】 DeepMind 提出元梯度强化学习算法,显著提高大规模深度强化学习应用的性能
    ubuntu18.04 安装wine64出现错误: X 64-bit development files not found.
    ubuntu18.04 源码方式安装wine , 警告,libxrender 64-bit development files not found, XRender won't be supported.
    【转载】 信息如何像零食、金钱一样掌控你的大脑
    图像处理算法 之 滤波 模糊(基于OpenCV)
    图像处理之FPN校正
    ISP-黑电平校正(BLC)
    ISP基础(0y):图像传感器
  • 原文地址:https://www.cnblogs.com/neversayno/p/5137155.html
Copyright © 2011-2022 走看看