当前位置:首页 > 科技  > 软件

听说异步和解耦才是消息队列最有价值的功能

来源: 责编: 时间:2024-07-11 09:29:15 817观看
导读消息队列作为互联网互联网项目的一个可选中间件,被很多的项目、产品采用。就算你没用过,肯定也多少了解一些,因为它是现代面试八股文必考科目之一。消息队列这个很形象,就是把消息推到一个队列中,然后再到这个队列里读,是不

消息队列作为互联网互联网项目的一个可选中间件,被很多的项目、产品采用。就算你没用过,肯定也多少了解一些,因为它是现代面试八股文必考科目之一。ibf28资讯网——每日最新资讯28at.com

消息队列这个很形象,就是把消息推到一个队列中,然后再到这个队列里读,是不是就这么简单。ibf28资讯网——每日最新资讯28at.com

图片图片ibf28资讯网——每日最新资讯28at.com

听说消息队列最有用的功能是异步和解耦,而什么消峰填谷、分布式事务都是锦上添花而已。ibf28资讯网——每日最新资讯28at.com

常用的消息队列

RocketMQ

RocketMQ 是阿里巴巴开发,现在已经是 Apache 软件基金会的顶级项目。RocketMQ 是用 Java 开发,很多使用 Java 技术栈的公司都用 RocketMQ 作为消息队列。我们就主要使用 RocketMQ 作为消息队列服务。ibf28资讯网——每日最新资讯28at.com

RabbitMQ

RabbitMQ 是一个开源的消息代理软件,它采用了高级消息队列协议(AMQP),用于在分布式系统中实现异步通信和消息传递,采用 Erlang 语言开发。最开始学习消息队列就是用的 RabbitMQ。ibf28资讯网——每日最新资讯28at.com

Apache Kafka

pache Kafka 是一个分布式流处理平台,最初由 LinkedIn 开发,并于2011年开源,之后成为 Apache 软件基金会的顶级项目。Kafka 旨在处理实时数据流,具有高吞吐量、低延迟和高可靠性的特点,广泛应用于日志收集、流处理、数据集成等场景。ibf28资讯网——每日最新资讯28at.com

ActiveMQ

Apache ActiveMQ 是一个开源的消息代理和集成模式服务器,由 Apache 软件基金会开发。ActiveMQ 在形式上和 RabbitMQ 比较像,ActiveMQ 也是用 Java 开发的。ibf28资讯网——每日最新资讯28at.com

除此之外,其实 Redis 也可以做消息队列。ibf28资讯网——每日最新资讯28at.com

消息队列的应用场景

消息队列最厉害的地方并不是采用的技术有多厉害,而是它的应用场景,只要把它加到某些应用场景中,有很多问题都可以迎刃而解。所以说,它厉害在思想上。ibf28资讯网——每日最新资讯28at.com

异步处理和解耦

说到异步就离不开解耦,说到解耦又脱离不了异步。ibf28资讯网——每日最新资讯28at.com

什么是异步呢?假设有个系统需要处理一个长流程,最常见的例子就是下单场景,用户下单购买商品,后台服务要在这个下单行为发生后做一系列的事情,要减库存、加到用户已购买列表中、发通知、跟踪订单进度等。ibf28资讯网——每日最新资讯28at.com

这一系列的动作如果全都同步来做,那响应时间会比较久,而且一旦其中某个环节失败,将会更加麻烦。ibf28资讯网——每日最新资讯28at.com

所以针对类似的场景,就有了异步处理的思路,在同步响应中只把最重要的动作完成,剩下的都可以异步处理,比如购买行为,收钱和减库存是最重要的,这两个成功了就算是购买成功了,剩下的通知、跟踪进度都可以稍后进行,也就是异步处理。ibf28资讯网——每日最新资讯28at.com

说到此,解耦也就出现了,收钱和减库存可以是一个线程来做,或者一个单独的服务来做,发通知又可以是另一个线程或者另一个服务来做,这样一来,两个动作、两个功能就解耦了,发通知的服务挂了不会影响真正的购买行为,而等到发通知服务启动后,可以再处理历史数据也没问题。ibf28资讯网——每日最新资讯28at.com

这个场景下,用到消息队列再合适不过。而且听说,这个场景才是消息队列有价值的地方,也是消息队列思想的灵魂所在。ibf28资讯网——每日最新资讯28at.com

流量削峰

流量削峰是在高并发情况下,通过消息队列将大量请求排队处理,避免系统在短时间内被大量请求压垮。ibf28资讯网——每日最新资讯28at.com

假设一个系统本来日常只支持1万并发,但是某个时候突然有大量的用户进来,流量超过了系统所能承受的最大值,如果不加以控制,那等待系统的只有崩溃。ibf28资讯网——每日最新资讯28at.com

这种情况下,系统可以将处理不了的请求暂时放到消息队列中,然后在系统所能支持的并发下依次处理队列中的请求。这样一来,系统既不会崩溃,也能将请求都一一处理掉。ibf28资讯网——每日最新资讯28at.com

当然了,如果没有消息队列,本身系统也可以采取其他的处理措施,比如直接将请求丢弃,或者返回一个固定值。比如某些抢购场景,本来就有数量限制,只有最先进来的请求才能抢到,后面不管再进来多少都抢不到,那后面多余的请求就没必要处理。ibf28资讯网——每日最新资讯28at.com

日志处理

很多公司都有专门的日志查看平台,例如 Kibana,公司内所有项目都会归集到统一的地方,通过界面点点按钮就能看到不同项目的日志了。ibf28资讯网——每日最新资讯28at.com

这背后的原理就是将用户行为日志发送到消息队列,再由专门的日志处理服务进行分析和处理。自从 Kafka 一出来,再用消息队列传输日志就好像被它垄断了。没办法,谁让人家在这方面有特长呢。ibf28资讯网——每日最新资讯28at.com

分布式事务

分布式事务通俗来说就是要么都成功,要么都不成功。ibf28资讯网——每日最新资讯28at.com

还是拿订单系统为例,在订单创建后,通过消息队列通知库存系统进行库存扣减,以保证数据的一致性。ibf28资讯网——每日最新资讯28at.com

下图是 RocketMQ 中关于分布式事务的流程图,我们之前的项目中一直用这种方式做分布式事务处理。ibf28资讯网——每日最新资讯28at.com

图片图片ibf28资讯网——每日最新资讯28at.com

这是有些消息队列本身支持的特性,只有本地事务完全成功执行后,才会最终投递消息,否则消费者是看不到这个消息的。ibf28资讯网——每日最新资讯28at.com

延时任务

比如我们在 12306买票,预订后锁票,有30分钟时间用来付款,这30分钟内,其他人是没办法看到这张票的。如果30分钟内未付款,那这张票就不属于你了。ibf28资讯网——每日最新资讯28at.com

这种场景就是延时任务的经典场景,每一个预订都会有自己的一个任务,这种任务和系统定时在某时某刻的定时任务是完全不一样的。ibf28资讯网——每日最新资讯28at.com

就是因为每一个预订都有一个任务,总不能来一个任务就给系统加一个定时任务吧,这不现实。所以这种场景下,用延时队列就最合适了,有些消息队列是支持的。ibf28资讯网——每日最新资讯28at.com

在消息生产者投递消息时,给消息一个延迟时间,只有到了规定的延迟时间后,这个消息才能被消费者消费掉。ibf28资讯网——每日最新资讯28at.com

最后

消息队列最厉害的地方在于它的思想,而不在于它使用的具体技术。ibf28资讯网——每日最新资讯28at.com

消息队列的应用场景众多,但是这么多应用场景中我觉得异步和解耦才是最重要的能力,你觉得呢?ibf28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-100337-0.html听说异步和解耦才是消息队列最有价值的功能

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 介绍 11 个常用的 C++ 代码

下一篇: 三星 Galaxy Z Flip6 亮相:AI 助力大视野智能外屏,重塑移动生活体验

标签:
  • 热门焦点
  • Redmi Pad评测:红米充满野心的一次尝试

    从Note系列到K系列,从蓝牙耳机到笔记本电脑,红米不知不觉之间也已经形成了自己颇有竞争力的产品体系,在中端和次旗舰市场上甚至要比小米新机的表现来得更好,正所谓“大丈夫生居
  • vivo TWS Air开箱体验:真轻 臻好听

    在vivo S15系列新机的发布会上,vivo的最新款真无线蓝牙耳机vivo TWS Air也一同发布,本次就这款耳机新品给大家带来一个简单的分享。外包装盒上,vivo TWS Air保持了vivo自家产
  • 6月iOS设备好评榜:第一蝉联榜首近一年

    作为安兔兔各种榜单里变化最小的那个,2023年6月的iOS好评榜和上个月相比没有任何排名上的变化,仅仅是部分设备好评率的下降,长年累月的用户评价和逐渐退出市场的老款机器让这
  • 6月安卓手机性能榜:vivo/iQOO霸占旗舰排行榜前三

    2023年上半年已经正式过去了,我们也迎来了安兔兔V10版本,在新的骁龙8Gen3和天玑9300发布之前,性能榜的榜单大体会以骁龙8Gen2和天玑9200+为主,至于那颗3.36GHz的骁龙8Gen2领先
  • 电视息屏休眠仍有网络上传 爱奇艺被质疑“薅消费者羊毛”

    记者丨宁晓敏 见习生丨汗青出品丨鳌头财经(theSankei) 前不久,爱奇艺发布了一份亮眼的一季报,不仅营收和会员营收创造历史最佳表现,其运营利润也连续6个月实现增长。自去年年初
  • 阿里大调整

    来源:产品刘有媒体报道称,近期淘宝天猫集团启动了近年来最大的人力制度改革,涉及员工绩效、层级体系等多个核心事项,目前已形成一个初步的“征求意见版”:1、取消P序列
  • iQOO Neo8 Pro抢先上架:首发天玑9200+ 安卓性能之王

    经过了一段时间的密集爆料,昨日iQOO官方如期对外宣布:将于5月23日推出全新的iQOO Neo8系列新品,官方称这是一款拥有旗舰级性能调校的作品。随着发布时
  • 微软发布Windows 11新版 引入全新任务栏状态

    近日,微软发布了Windows 11新版,而Build 22563更新主要引入了几周前曝光的平板模式任务栏等,系统更流畅了。更新中,Windows 11加入了专门针对平板优化的任务栏
  • Meta盲目扩张致超万人被裁,重金押注元宇宙而前景未明

    图片来源:图虫创意日前,Meta创始人兼CEO 马克·扎克伯发布公开信,宣布Meta计划裁员超11000人,占其员工总数13%。他公开承认了自己的预判失误:“不仅
Top