开发者社区> 萌萌怪兽> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

数据库必知词汇:消息队列MQ

简介: 消息是在两台计算机间传送的数据单位。消息可以非常简单,例如只包含文本字符串;也可以更复杂,可能包含嵌入对象。消息被发送到队列中。消息队列(Message Queue, MQ)是在消息的传输过程中保存消息的容器。消息队列管理器在将消息从它的源中继到它的目标时充当中间人。
+关注继续查看

消息是在两台计算机间传送的数据单位。消息可以非常简单,例如只包含文本字符串;也可以更复杂,可能包含嵌入对象。消息被发送到队列中。消息队列(Message Queue, MQ)是在消息的传输过程中保存消息的容器。消息队列管理器在将消息从它的源中继到它的目标时充当中间人。队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它。消息队列(Message Queue)是一种应用间的通信方式,消息发送后可以立即返回,由消息系统来确保消息的可靠传递。消息发布者只管把消息发布到 MQ 中而不用管谁来取,消息使用者只管从 MQ 中取消息而不管是谁发布的。这样发布者和使用者都不用知道对方的存在。

消息队列是一种异步的服务间通信方式,使用无服务和微服务架构。消息在被处理和删除之前一直存储在队列上。每条消息仅可被同一用户处理一次。消息队列可被用于分离重量级处理、缓存或批处理工作以及缓解高峰期工作负载。在现代云架构中,应用程序被分解为多个规模较小且更易于开发、部署和维护的独立构建模块。消息队列可为这些分布式应用程序提供通信和协调。消息队列可以显著简化分离应用程序的编码,同时提高性能、可靠性和可扩展性。

借助消息队列,系统的不同部分可相互通信并异步执行处理操作。消息队列提供一个临时存储消息的轻量级缓存区,以及允许软件组件连接到队列以及发送接受消息的终端节点。这些消息通常较小,可以是请求、恢复、错误消息或明文消息等。要发送消息时,一个名为“创建器”的组件将消息添加到队列。消息将存储在队列中,直至名为“处理器”的另一组件检索该消息并执行相关操作。许多创建器和处理器都可以使用队列,但一条信息只能有一个处理器处理一次。因此,这种消息收发模式通常称为一对一或点对点通信。如果消息需要由多个处理器进行处理,可采用扇出设计模式将消息队列与发布/订阅消息收发结合起来。

我们可以把消息队列比作是一个存放消息的容器,当我们需要使用消息的时候可以取出消息供自己使用。消息队列是分布式系统中重要的组件,使用消息队列主要是为了通过异步处理提高系统性能和削峰、降低系统耦合性。目前使用较多的消息队列有ActiveMQ、RabbitMQ、ZeroMQ、Kafka、MetaMQ、RocketMQ而部分数据库如Redis、Mysql以及phxsql也可实现消息队列的功能。使用消息队列主要有两点好处:1.通过异步处理提高系统性能(削峰、减少响应所需时间);2.降低系统耦合性。
消息队列使用场景
消息队列在实际应用中包括如下四个场景:

  • 应用耦合:多应用间通过消息队列对同一消息进行处理,避免调用接口失败导致整个过程失败;
  • 异步处理:多应用对消息队列中同一消息进行处理,应用间并发处理消息,相比串行处理,减少处理时间;
  • 限流削峰:广泛应用于秒杀或抢购活动中,避免流量过大导致应用系统挂掉的情况;
  • 消息驱动的系统:系统分为消息队列、消息生产者、消息消费者,生产者负责产生消息,消费者(可能有多个)负责对消息进行处理;

资料来源:
消息队列系列一(相关概念) https://segmentfault.com/a/1190000018220881
MQ消息中间件最全面分析 https://mp.weixin.qq.com/s/lqFGnIUtqTFZ_GHp46z48Q
新手也能看懂,消息队列其实很简单 https://www.jianshu.com/p/36a7775b04ec

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
多维度对比5款主流分布式MQ消息队列
从17个维度综合对比Kafka、RabbitMQ、ZeroMQ、RocketMQ、ActiveMQ这5款当前最主流的MQ消息中间件产品,希望能为您的下一次产品的架构设计和MQ消息中间件选型提供参考依据。
165 0
MySQL数据库面试题(2020最新版)必知必会(下)
MySQL数据库面试题(2020最新版)必知必会
58 0
数据库必知词汇:DB2
DB2是美国IBM公司最初于1983年研发的一套关系型数据库管理系统,与此同时DB2也是IBM公司第一款商用数据库。DB2是一个关系数据库管理系统(RDBMS),主要用于有效地存储、分析和检索数据,此外,通过支持面向对象特性和XML的非关系型结构,使得DB2产品得以扩展。如今,DB2是IBM信息管理组合中不可或缺的一部分。它是一个功能全面、高性能的数据库引擎,能够处理大量数据并同时为许多用户提供服务。
286 0
数据库必知词汇:Sqoop
Apache Sqoop是一个用于在Apache Hadoop和关系数据库等结构化数据存储之间高效传输大容量数据的开源工具。主要用于在Hadoop(Hive)与传统的数据库间进行数据的传递,可以将一个关系型数据库(例如 :MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。此外,对于某些NoSQL数据库Sqoop也提供了连接器。
261 0
数据库必知词汇:高可用性(HA)
高可用性(High Availability, HA)指的是通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非计划)所导致的停机时间,以提高系统和应用的可用性。它与被认为是不间断操作的容错技术有所不同。HA系统是企业防止核心计算机系统因故障停机的最有效手段。高可用性通常来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性,是分布式系统架构设计中必须考虑的因素之一。
730 0
数据库必知词汇:SQL标准
SQL标准是由国际标准化组织(ISO)、美国国家标准委员会ANSI等制定的,对数据库管理系统的统一操作方式。
1166 0
数据库必知词汇:SQL数据类型
在关系型数据库表中,数据类型较为常见的包括整形(int),单精度(folat),双精度(double),可变长度字符(varchar),固定长度字符(char),长型(long),日期(date)等。对于不同的关系型数据库管理系统而言,往往具有不同的数据类型,这里以MySQL数据库为例,介绍SQL中的数据类型。
197 0
数据库必知词汇:数据库事务
数据库事务(Transaction)是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务由事务开始与事务结束之间执行的全部数据库操作组成。
274 0
数据库必知词汇:Pig
Apache Pig 是一个高级过程语言,特点是其结构易于大量并行化,适合于使用 Hadoop 和 MapReduce 平台来查询大型半结构化数据集。通过允许对分布式数据集进行类似 SQL 的查询,Pig 可以简化 Hadoop 的使用。
367 0
数据库必知词汇:Oracle
Oracle Database,又名Oracle RDBMS,或简称Oracle。是美国Oracle公司(甲骨文)公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。
334 0
+关注
萌萌怪兽
云栖社区老同学,软件工程学生党。研究兴趣:软件工程、软件架构设计、软件过程、DevOps以及微服务等。
181
文章
13
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载