什么是消息队列

这样的场景你一定不陌生:小王到M记点餐之后,服务员给了他一个号牌,并让他在柜台桌子前方等待叫号取餐。每个人都按照自己付款拿到的号牌顺序排队等叫号。即使店里人再多,也不会显得没有秩序。

在上述场景中,柜台其实就充当了一个消息队列(Message Queue)。小王等生产者把订餐的消息发送到柜台即消息队列里,又从其中取了餐即消费了消息,可以说这就是消息队列的一个完整走向——消息被发送到队列中,又成功被消费者消费。“消息队列”是在消息的传输过程中保存消息的容器,队列的主要目的是提供路由并保证消息的传递。如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它。

一般来说,消息队列是一种异步的服务间通信方式,是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。使用较多的消息队列有RocketMQ、RabbitMQ、Kafka等。

分布式消息服务的原理

在消息队列的基础上,稳定可靠的消息队列服务——分布式消息服务应运而生。分布式消息服务(Distributed Message Service,简称DMS)是一项基于高可用分布式集群技术的消息中间件服务,提供普通队列、有序队列、Kafka队列、RabbitMQ,兼容HTTP、TCP、AMQP协议,为分布式应用提供低延迟、高并发的异步通信机制。其生产和消费消息的示意图如下图所示。

消息生产者即发送消息的一方,也叫消息发送者,发送消息到指定的消息队列中。生产者将消息M发送到队列中。消息M在队列中冗余分布,存在多个副本。

消费消息的一方,也叫消息接收者,通过调用消息服务的消费接口从队列中读取消息。消费者从队列中消费消息,获取到消息M。在消费者消费消息M期间,消息M仍然停留在队列中,但消息M从被消费开始的30秒内不能被该消费组再次消费,若在这30秒内没有被消费者确认消费完成,则DMS认为消息M未消费成功,将可以被继续消费。

消费者确认消息M消费完成,消息M将不能被该消费者所在消费组消费。消息M仍然保持在队列中,并且可以被其它消费组消费,消息在队列中的保留时间为至少72小时(除非队列被删除),72小时后将会被删除。

分布式消息服务DMS的优势

以上就是对分布式消息服务原理和优点的浅析,目前华为云DMS推出了免费体验活动,想要了解更多,欢迎前往分布式消息服务查看。

浅谈消息队列的原理及优势相关推荐

  1. 浅谈消息队列及常见的分布式消息队列中间件

    背景 分布式消息队列中间件是是大型分布式系统不可缺少的中间件,通过消息队列,应用程序可以在不知道彼此位置的情况下独立处理消息,或者在处理消息前不需要等待接收此消息.所以消息队列主要解决应用耦合.异步消 ...

  2. 动态磅是怎么原理_浅谈动态地磅的原理及未来发展方向

    浅谈动态地磅的原理及未来发展方向: 文章介绍了动态地磅的结构和工作原理,针对动态地磅的分类做了全面的概述,分别对不同的动态地磅做了对比及详细的阐述,说明选择和使用动态地磅器的注意事项,凸显了轴组式动态 ...

  3. 深入浅谈,CPU设计原理

    首先,声明这是一篇转载文,这篇文章是,从卡饭论坛 看到的一篇文章<深入浅谈,CPU设计原理>,是一篇连载,文章,卡饭论坛,是我高中的时候,经常去的论坛,里面有很多好的文章,推荐给大家.也许 ...

  4. 消息队列NetMQ 原理分析2-IO线程和完成端口

    目录 前言 介绍 目的 IO线程 初始化IO线程 Proactor 启动Procator线程轮询 处理socket IOObject 总结 前言 介绍 [NetMQ](https://github.c ...

  5. 浅谈Rem 及其转换原理

    浅谈Rem 及其转换原理 今天有小伙伴问了我Rem的转换原理,那我就写篇博客记录一下吧! rem 是 CSS3 新增的相对长度单位,是指相对于元素 html 的 font-size 计算值 的大小. ...

  6. 浅谈人工智能的工作原理

    众所周知人工智能现在快速发展,并且为众人所熟知,不仅如此,人工智能也在各行各业中广泛使用.那么人工智能的工作原理是什么呢? 浅谈人工智能的工作原理 人类智能由三个部分构成(还有些其他生物学和科学现象也 ...

  7. RTOS中的消息队列的原理以及应用

    消息队列的原理 RTOS中的消息队列是一种用于任务间通信的机制,它可以实现任务之间的异步通信,从而实现任务间的解耦.消息队列是一个先进先出的数据结构,任务可以向队列中发送消息,也可以从队列中接收消息. ...

  8. 浅谈 git 底层工作原理

    浅谈 git 底层工作原理 系统复习到这里也快差不多了,大概就剩下两三个 sections,这里学习一下 git 的 hashing 和对象. 当然,跳过问题也不大. config 文件 这里还是会用 ...

  9. 伺服驱动器生产文件_浅谈伺服驱动器的工作原理

    原标题:浅谈伺服驱动器的工作原理 目前,主流的伺服驱动器均采用数字信号处理器(DSP)作为控制核心,可以实现比较复杂的控制算法,实现数字化.网络化和智能化.功率器件普遍采用以智能功率模块(IPM)为核 ...

最新文章

  1. ActivityManagerService知识点
  2. 基于 Bochs 的操作系统内核实现
  3. [Linux] Linux smaps接口文件结构
  4. 积分商城如何梳理思路和进行设计
  5. 今日arXiv精选 | 21篇EMNLP 2021最新论文
  6. Runtime底层原理--动态方法解析、消息转发源码分析
  7. php artisan快捷命令
  8. termux配置python安装kali_安卓安装kali linux之Termux
  9. vue中用数组语法绑定class
  10. 你知道考的是平方数吗(记洛谷P1876题RE+WA的经历,Java语言描述)
  11. FastDFS原理学习笔记
  12. 英语单词词性顺口溜_初小英语语法速记口诀大全——词类
  13. Java与es8实战之二:Springboot集成es8的Java Client
  14. asp.net线上宠物商店系统
  15. ctfshow MengXIn 下(pearcmd.php妙用条件竞争简单密码简单misc)
  16. 程序员开发什么小程序挣钱_作为程序员赚钱的5种独特方式
  17. MAC 修改环境变量
  18. HTML下拉菜单怎么做成横向,JQuery实现绚丽的横向下拉菜单
  19. mooc幕课零基础学Java语言(翁恺)if-else语句比较三个数, 输出最大值
  20. 软件企业测试人员的角色与职责

热门文章

  1. java写的教育管理的项目_干货分享|推荐12款适合做Java后台管理系统的项目
  2. python怎么用圆周率_Python语言中,如何使用圆周率?
  3. L2-DAY 2-程序完善夜
  4. [Java][内存模型]
  5. 【Linux开发】linux设备驱动归纳总结(八):3.设备管理的分层与面向对象思想...
  6. ASP.NET MVC 2.0 AsyncController(转)
  7. LwIP-Win32试用笔记
  8. 让其他CMS黯然失色的we7CMS
  9. CCF201604-2 俄罗斯方块
  10. 直播丨国产数据库的机遇与挑战