最近要做一个项目准备用分布式消息队列, 花点时间看了下。

消息队列技术是分布式应用间交换信息的一种技术。消息队列可驻留在内存或磁盘上,队列存储消息直到它们被应用程序读走。通过消息队列,应用程序可独立地执行--它们不需要知道彼此的位置、或在继续执行前不需要等待接收程序接收此消息。

在分布式计算环境中,为了集成分布式应用,开发者需要对异构网络环境下的分布式应用提供有效的通信手段。为了管理需要共享的信息,对应用提供公共的信息交换机制是重要的。

消息队列为构造以同步或异步方式实现的分布式应用提供了松耦合方法。消息队列的API调用被嵌入到新的或现存的应用中,通过消息发送到内存或基于磁盘的队列或从它读出而提供信息交换。消息队列可用在应用中以执行多种功能,比如要求服务、交换信息或异步处理等。

中间件是一种独立的系统软件或服务程序,分布式应用系统借助这种软件在不同的技术之间共享资源,管理计算资源和网络通讯。它在计算机系统中是一个关键软件,它能实现应用的互连和互操作性,能保证系统的安全、可靠、高效的运行。中间件位于用户应用和操作系统及网络软件之间,它为应用提供了公用的通信手段,并且独立于网络和操作系统。中间件为开发者提供了公用于所有环境的应用程序接口,当应用程序中嵌入其函数调用,它便可利用其运行的特定操作系统和网络环境的功能,为应用执行通信功能。

如果没有消息中间件完成信息交换,应用开发者为了传输数据,必须要学会如何用网络和操作系统软件的功能,编写相应的应用程序来发送和接收信息,且交换信息没有标准方法,每个应用必须进行特定的编程从而和多平台、不同环境下的一个或多个应用通信。例如,为了实现网络上不同主机系统间的通信,将要求具备在网络上如何交换信息的知识(比如用TCP/IP的socket程序设计);为了实现同一主机内不同进程之间的通讯,将要求具备操作系统的消息队列或命名管道(Pipes)等知识。

MQ的通讯模式

1) 点对点通讯:点对点方式是最为传统和常见的通讯方式,它支持一对一、一对多、多对多、多对一等多种配置方式,支持树状、网状等多种拓扑结构。

2) 多点广播:MQ适用于不同类型的应用。其中重要的,也是正在发展中的是"多点广播"应用,即能够将消息发送到多个目标站点(Destination List)。可以使用一条MQ指令将单一消息发送到多个目标站点,并确保为每一站点可靠地提供信息。MQ不仅提供了多点广播的功能,而且还拥有智能消息分发功能,在将一条消息发送到同一系统上的多个用户时,MQ将消息的一个复制版本和该系统上接收者的名单发送到目标MQ系统。目标MQ系统在本地复制这些消息,并将它们发送到名单上的队列,从而尽可能减少网络的传输量。

3) 发布/订阅(Publish/Subscribe)模式:发布/订阅功能使消息的分发可以突破目的队列地理指向的限制,使消息按照特定的主题甚至内容进行分发,用户或应用程序可以根据主题或内容接收到所需要的消息。发布/订阅功能使得发送者和接收者之间的耦合关系变得更为松散,发送者不必关心接收者的目的地址,而接收者也不必关心消息的发送地址,而只是根据消息的主题进行消息的收发。在MQ家族产品中,MQ Event Broker是专门用于使用发布/订阅技术进行数据通讯的产品,它支持基于队列和直接基于TCP/IP两种方式的发布和订阅。

4) 群集(Cluster):为了简化点对点通讯模式中的系统配置,MQ提供Cluster(群集)的解决方案。群集类似于一个域(Domain),群集内部的队列管理器之间通讯时,不需要两两之间建立消息通道,而是采用群集(Cluster)通道与其它成员通讯,从而大大简化了系统配置。此外,群集中的队列管理器之间能够自动进行负载均衡,当某一队列管理器出现故障时,其它队列管理器可以接管它的工作,从而大大提高系统的高可靠性。

http://dolphin-ygj.javaeye.com/blog/361689
http://blog.csdn.net/ctowoo/archive/2009/12/18/5032047.aspx
Web应用中的轻量级消息队列: Twitter以前就使用RabbitMQ(http://www.rabbitmq.com/)实现消息队列服务,现在又转而使用Kestrel(http://github.com/robey/kestrel)来实现消息队列服务,此外还有很多其他的选择,比如说:ActiveMQ(http://activemq.apache.org/),ZeroMQ(http://www.zeromq.org/)等。
memcacheq(http://memcachedb.org/memcacheq/)
redis(http://code.google.com/p/redis/)

消息队列技术的介绍和原理(MQ)相关推荐

  1. 消息中间件系列(五):MQ消息队列的12点核心原理总结

    消息队列已经逐渐成为分布式应用场景.内部通信.以及秒杀等高并发业务场景的核心手段,它具有低耦合.可靠投递.广播.流量控制.最终一致性 等一系列功能. 无论是 RabbitMQ.RocketMQ.Act ...

  2. MQ消息队列(1)12点核心原理总结

    消息队列已经逐渐成为分布式应用场景.内部通信.以及秒杀等高并发业务场景的核心手段,它具有低耦合.可靠投递.广播.流量控制.最终一致性 等一系列功能. RabbitMQ.RocketMQ.ActiveM ...

  3. 高并发架构系列:MQ消息队列的12点核心原理总结

    2019独角兽企业重金招聘Python工程师标准>>> 消息队列已经逐渐成为分布式应用场景.内部通信.以及秒杀等高并发业务场景的核心手段,它具有低耦合.可靠投递.广播.流量控制.最终 ...

  4. 【转】Azure Messaging-ServiceBus Messaging消息队列技术系列2-编程SDK入门

    各位,上一篇基本概念和架构中,我们介绍了Window Azure ServiceBus的消息队列技术的概览.接下来,我们进入编程模式和详细功能介绍模式,一点一点把ServiceBus技术研究出来. 本 ...

  5. 消息队列技术介绍 : ActiveMQ、RabbitMQ、ZeroMQ、Kafka、MetaMQ、RocketMQ

    一. 消息队列概述 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 消息队列中间件是分布式系统中重要的组件,主要解决应用耦合.异步消息.流量削锋等问 ...

  6. 消息队列 策略_消息队列技术点梳理(思维导图版)

    消息队列作为服务/应用之间的通信中间件,可以起到业务耦合.广播消息.保证最终一致性以及错峰流控(克服短板瓶颈)等作用.本文不打算详细深入讲解消息队列,而是体系化的梳理消息队列可能涉及的技术点,起到提纲 ...

  7. 【转载】消息队列RabbitMQ入门介绍

    (一)基本概念 RabbitMQ 是流行的开源消息队列系统,用 erlang 语言开发.我曾经对这门语言挺有兴趣,学过一段时间,后来没坚持.RabbitMQ 是 AMQP(高级消息队列协议)的标准实现 ...

  8. 消息队列中间件 Message Queue 简称:MQ

    一.什么是消息队列? 消息队列,一般我们会简称它为MQ(Message Queue) 队列是一种先进先出的数据结构. 现有常用的开源消息中间件有Kafka.CMQ.JBoss Messaging.JO ...

  9. 拿走不谢:一份历经线上考验的大规模系统的消息队列技术方案!

    作者|中华石杉 责编|伍杏玲 本文经授权转载自石杉的架构笔记 在之前的文章中,我们分析了如何利用消息中间件对两系统进行解耦处理. 同时我们也提到了,使用消息中间件还有利于一份数据被多个系统同时订阅,供 ...

最新文章

  1. 王爽老师的汇编语言 实验8 jmp是如何实现跳转的
  2. 互联网+时代,SAP助力跨境电商全面升级研讨会圆满落幕
  3. c语言笔记照片_c语言笔记
  4. hihocoder #1362 : 修补木桶(二分+dp)
  5. HDU 2571 命运
  6. Linux系统编程——线程池
  7. 西媒盘点:历史不该遗忘的七位女数学家
  8. linux的RPM支持图片格式,Linux下rpm、yum和源码三种安装方式详细介绍
  9. 总结:MySQL备份与恢复的三种方法
  10. 002 如何将电子版一寸照以照片的方式打印出来
  11. 自己做量化交易软件(32)小白量化实战6--仿通达信公式选股
  12. 利用Blob进行文件上传的完整步骤
  13. Qt编程之实现属性窗口编辑器
  14. burst什么意思_burst是什么意思
  15. 通过搜狗蜘蛛池,让网站收录排名提升
  16. 台式电脑上为什么没有计算机,台式电脑怎么没有声音
  17. 微信公众号简单接入springboot集成weixin4j
  18. 阻容降压电路:每个元器件计算选型!
  19. Python实现小说下载器,可以打包exe
  20. 植物识别扫一扫的软件有哪些?植物识别软件推荐。

热门文章

  1. 我的第二本译作《精通OpenStack》上架啦:书籍介绍和译者序
  2. 飞书机器人python给用户发信息api调用
  3. 基于Android开发的车牌识别app源码
  4. (Alpha)Let's-展示博客
  5. 【Book 133】Illuminate-Harness the Positive Power of negative Thinking
  6. 力扣 面试题 17.09. 第 k 个数
  7. 计算思维(1)-质因数
  8. 一颗璀璨的月光宝石——Lua
  9. Lifecycle与LiveData的珠联璧合
  10. Java 基础常见面试题(持续更新)