• 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。但该消息处理循环迅速成为中心循环,而你的应用程序很快就会分解成一组消息处理任务。它是优雅和自然的。而且,它可扩展:每个任务 对应一个节点,节点通过任意传输方式互相交谈。在一个进程中的两个节点(节点是一个线程),在一台电脑中的两个节点(节点是一个进程),或一个网络上的两 台电脑(节点是一台电脑),所有的处理方式都是相同的,不需要更改应用程序代码。

    态度决定行为,行为决定习惯,习惯决定性格,性格决定命运
  • 相关阅读:
    极简风格网络消息以及分发架构
    GPS网络时间服务器是如何让集成系统协调工作的?
    北斗授时设备(NTP时间服务器)对高速联网收费的重要性
    卫星互联网路由技术现状及展望
    【Python】获取中国法定节假日的封装
    GCC 内联汇编基础
    MIT6.828——Lab1 partB(麻省理工操作系统课程实验)
    MIT6.828——Lab1 partA(麻省理工操作系统课程实验)
    bochs(2.6.11)配置安装
    MIT6.828(Step0)——实验环境配置
  • 原文地址:https://www.cnblogs.com/neversayno/p/5137155.html
Copyright © 2020-2023  润新知