消息中间件MQ基础理论知识

欢迎转载,转载请注明出处:http://www.cnblogs.com/lidabnu/p/5723280.html

消息中间件已经流行很长时间,一般情况下,不需要自己来从头研发、设计消息中间件,所以基础知识的目的是了解消息中间件解决什么问题、如何评估衡量消息中间件,以及掌握基本的相关术语。

专业术语

  • 消息:一种需要跨系统传递的数据结构
  • 生产者:产生消息的系统
  • 消费者:消费消息的系统
  • Broker:消息中转角色,负责消息的存储和转发,JMS规范中叫做Provider

应用场景

总结了一下,消息中间件用于解耦生产者与消费者,现在的理解,主要是降低生产者对消费者的“了解程度或要求程度”,具体来看:

  • 生产者不知道也不关心消费者是谁,不知道也不关心消费者是不是可能减少或者增多——我都不知道你是谁
  • 生产者知道消费者都有谁,但是消费者的技术实现方式完全不同:例如异构系统的集成——我知道你是谁,但是我对你怎么实现没啥要求
  • 生产者与消费者的系统质量属性要求不同或已支持的质量属性程度不同:——我知道你是谁,但是我对你实现的好坏没啥要求
    •   响应时间的要求不同:例如订单提交操作,生产者需要及时的响应最终用户,而订单的处理可以有相对较长的延时。
    •   可用性的不同:例如与某个外部系统集成,该外部系统的可用性相对不高,则可使用消息中间件来屏蔽此种不同。

消息中间件本身实现要解决的问题

从上面的应用场景来看,消息中间件需要解决以下问题,或者说要具备以下特性

  • 我不知道你是谁:支持发布-订阅模式,即支持动态的扩展和缩小消息消费者的范围
  • 我知道你是谁,我对你怎么实现没啥要求:与消费者、生产者的通信方式平台无关,提供多种技术的接入支持
  • 我知道你是谁,我对你实现的好坏没啥要求:
    • 具备足够的消息堆积能力:对应于消费者挂了
    • 对消息“至少消费一次”的保证:对应于消费者拿走一条消息后还没消费完就挂了

除上述要求外,还有一些通用的质量属性要求:

  • 高性能
  • 性能可伸缩
  • 可靠性:主要指消息的可靠性,各种情况下不应丢消息
  • 高可用:自身不能随便宕机
  • 易用性/可维护性:
    • API易用
    • 部署容易
    • 运维管理容易:便于与已有监控系统集成;便于细粒度管理消息中间件中的各种消息

以及一些异步化(消息中间件实质上是一种同步变异步)后所要解决的问题:

  • 消息顺序性保证:先生产的消息需要先消费,某些场景下是必须的

最后,上个学习过程中的脑图:

时间: 2024-10-14 20:00:05

消息中间件MQ基础理论知识的相关文章

java基础理论知识的一些总结

在学习Java初期,由于我们是刚开始接触Java,我们不仅需要牢牢掌握Java的基础理论知识,来为我们后面对Java更深层次的学习打好基础,而且我们需要养成编程人的思想习惯.来我们一起来探索Java基础知识和需要的行为习惯: 一.编写代码的思想习惯:  1.明确需求.我要做什么? 2.分析思路.我要怎么做?1,2,3. 3.确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4.代码实现.用具体的java语言代码把思路体现出来.  二.学习新语句新知识的四点: 1.该语句是什么? 2.该语句有

docker基础理论知识

Docker实现的两个基本理论知识 一.NameSpace:内核的实现技术,隔离机制. ●PID NameSpace:(隔离pid)每一个用户空间都有一个唯一的PID号,彼此之间不会干扰.从Linux2.6.24内核版本开始引入的,是一种最新的技术. ●Network NameSpace:真正起源于Linux2.6.29,实现与网络用户隔离的.(网络设备.网络线.端口资源隔离) ●User NameSpace:实现用户和用户组资源隔离的.Linux3.8 ●IPC NameSpace: 进程间通

计算机基础理论知识[转]

计算机基础 链接地址:http://www.cnblogs.com/rcy2012/p/6003981.html eh,怎么说,初赛烂成一团shit了,还不好好复习复习.. 1. 计算机发展史中计算机诞生时间的三个第一 世界上发明的第一台电子计算机 ENIA C 1946.2 美国 世界上第一台按存储程序控制功能设计的计算机 EDVA C 1946 1950 美国 世界上第一台投入运行的实现存储顺序控制功能的计算机 EDSA C 1947 1949.5 英国 2. 计算机发展的四个阶段和计算机时

菜鸟学Linux 第001天笔记 基础理论知识

主要学习的知识:   RHCE          RH033          RH133          RH253  RHCA:       RH401       RH423(LDAP)学习不多       RH442       RH436(集群)       RHS333MySQL 应用行业:    运维工程师.系统工程师.系统架构师.DBA 所有后期实验都是在VMware里操作,必须学会使用此虚拟机. 计算机体系结构和如何运作:    运算器    控制器    存储器    输入

JavaOOP基础理论知识

上册:java面相对象语法,理论性为主: 1.对象:就是"东西",世界万物都是对象:(对象因关注而产生) 2.类:将对象中,具有相同属性和行为的对象集合在一起:(类是用来定义的<>就是个模版,模具:)(抽类) 3.方法:类中对象共有的行为:(比如:人类,都要吃饭,走路)(动作,能做什么) 3.1.方法组成:修饰符,返回值,方法名,参数,方法体: 3.2.抽象方法:无方法体的方法(必须由abstract修饰)(然后,类也必须由abstract修饰) 3.3.构造方法: 3.3

软件测试基础理论知识总汇(一)

1.测试基础 2.软件测试对象和测试级别 3.系统测试类型 测试级别(也称测试类型)中,系统测试是应用最多的测试类型,系统测试类型可以细分出很多类型,以下列举核心的系统测试类型. 4.软件测试方法(系统测试方法)

S-Docker_01_基础理论知识

1.docker 类似虚拟机,不是虚拟机 2.docker 是一种系统虚拟化技术,基于LXC(Linux容器)等技术,docker进行了近一步的封装,就像使用一个虚拟机一样:比虚拟机更加轻量 2.1 docker的优点: 2.1.1快速的部署交付 2.1.2更高效率的虚拟化 2.1.3迁移和扩展(高兼容性) 2.1.4简单管理 3.容器组成: 3.1.nemaspea : 访问隔离 实现了容器间的直接隔离 3.2.cgroup  :资源控制 负责容器的资源限制和审计:(cpu,内存,IO,网络带

OpenText Cordys BOP 4平台开发入门实战演练——基础理论知识

前言 随着互联网技术的发展,基于B/S结构的软件架构,呈现出多样化,所涉及到的富客户端.Webservice.WEB 2.0.HTML5等技术也粉墨登场,本文将介绍基于OpenText Cordys产品的SOA体系架构和相关开发技术,为开发人员分享另一种软件系统开发实践. 其中,富客户模型将界面分解成许多的既可以和用户直接交互又可以和服务器进行通信的小单元模块,所涉及到开发语言是JavaScript,以及围绕HTML DOM开发动态网页. 关于SOA SOA是面向服务的体系结构,它将应用程序的不

MQ入门知识和简单消息发送配置

消息(Message) 消息:应用数据体和消息数据头. 消息是分为持久的和非持久的,持久就是队列管理器重启houston消息仍然存在. 队列 队列就是存放消息的容易,本地队列,远程队列,别名队列,模型队列. 本地队列:队列实体 远程队列和别名队列:一种队列的定义 模型队列:模型队列是为了创建动态队列 本地队列 1.初始化队列:用于消息触发,存放触发消息的队列 2.目标队列:消息的目的地,存放消息 3.死信队列:存放不能抵达的消息 4.传输队列:用于传递消息 队列管理器 消息队列的管理者,用来维护