AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當(dāng)前位置:首頁 > 科技  > 軟件

面試官:消息隊列的應(yīng)用場景有哪些?

來源: 責(zé)編: 時間:2024-05-29 17:26:13 120觀看
導(dǎo)讀通常來說,使用消息隊列主要能為我們的系統(tǒng)帶來下面三點好處:異步處理削峰/限流降低系統(tǒng)耦合性除了這三點之外,消息隊列還有其他的一些應(yīng)用場景,例如實現(xiàn)分布式事務(wù)、順序保證和數(shù)據(jù)流處理。如果在面試的時候你被面試官問

通常來說,使用消息隊列主要能為我們的系統(tǒng)帶來下面三點好處:kQM28資訊網(wǎng)——每日最新資訊28at.com

  1. 異步處理
  2. 削峰/限流
  3. 降低系統(tǒng)耦合性

除了這三點之外,消息隊列還有其他的一些應(yīng)用場景,例如實現(xiàn)分布式事務(wù)、順序保證和數(shù)據(jù)流處理。kQM28資訊網(wǎng)——每日最新資訊28at.com

如果在面試的時候你被面試官問到這個問題的話,一般情況是你在你的簡歷上涉及到消息隊列這方面的內(nèi)容,這個時候推薦你結(jié)合你自己的項目來回答。kQM28資訊網(wǎng)——每日最新資訊28at.com

異步處理

通過異步處理提高系統(tǒng)性能通過異步處理提高系統(tǒng)性能kQM28資訊網(wǎng)——每日最新資訊28at.com

將用戶請求中包含的耗時操作,通過消息隊列實現(xiàn)異步處理,將對應(yīng)的消息發(fā)送到消息隊列之后就立即返回結(jié)果,減少響應(yīng)時間,提高用戶體驗。隨后,系統(tǒng)再對消息進(jìn)行消費。kQM28資訊網(wǎng)——每日最新資訊28at.com

因為用戶請求數(shù)據(jù)寫入消息隊列之后就立即返回給用戶了,但是請求數(shù)據(jù)在后續(xù)的業(yè)務(wù)校驗、寫數(shù)據(jù)庫等操作中可能失敗。因此,使用消息隊列進(jìn)行異步處理之后,需要適當(dāng)修改業(yè)務(wù)流程進(jìn)行配合,比如用戶在提交訂單之后,訂單數(shù)據(jù)寫入消息隊列,不能立即返回用戶訂單提交成功,需要在消息隊列的訂單消費者進(jìn)程真正處理完該訂單之后,甚至出庫后,再通過電子郵件或短信通知用戶訂單成功,以免交易糾紛。這就類似我們平時手機(jī)訂火車票和電影票。kQM28資訊網(wǎng)——每日最新資訊28at.com

削峰/限流

先將短時間高并發(fā)產(chǎn)生的事務(wù)消息存儲在消息隊列中,然后后端服務(wù)再慢慢根據(jù)自己的能力去消費這些消息,這樣就避免直接把后端服務(wù)打垮掉。kQM28資訊網(wǎng)——每日最新資訊28at.com

舉例:在電子商務(wù)一些秒殺、促銷活動中,合理使用消息隊列可以有效抵御促銷活動剛開始大量訂單涌入對系統(tǒng)的沖擊。如下圖所示:kQM28資訊網(wǎng)——每日最新資訊28at.com

削峰削峰kQM28資訊網(wǎng)——每日最新資訊28at.com

降低系統(tǒng)耦合性

使用消息隊列還可以降低系統(tǒng)耦合性。我們知道如果模塊之間不存在直接調(diào)用,那么新增模塊或者修改模塊就對其他模塊影響較小,這樣系統(tǒng)的可擴(kuò)展性無疑更好一些。kQM28資訊網(wǎng)——每日最新資訊28at.com

生產(chǎn)者(客戶端)發(fā)送消息到消息隊列中去,消費者(服務(wù)端)處理消息,需要消費的系統(tǒng)直接去消息隊列取消息進(jìn)行消費即可而不需要和其他系統(tǒng)有耦合,這顯然也提高了系統(tǒng)的擴(kuò)展性。kQM28資訊網(wǎng)——每日最新資訊28at.com

發(fā)布/訂閱(Pub/Sub)模型發(fā)布/訂閱(Pub/Sub)模型kQM28資訊網(wǎng)——每日最新資訊28at.com

消息隊列使用發(fā)布-訂閱模式工作,消息發(fā)送者(生產(chǎn)者)發(fā)布消息,一個或多個消息接受者(消費者)訂閱消息。 從上圖可以看到消息發(fā)送者(生產(chǎn)者)和消息接受者(消費者)之間沒有直接耦合,消息發(fā)送者將消息發(fā)送至分布式消息隊列即結(jié)束對消息的處理,消息接受者從分布式消息隊列獲取該消息后進(jìn)行后續(xù)處理,并不需要知道該消息從何而來。對新增業(yè)務(wù),只要對該類消息感興趣,即可訂閱該消息,對原有系統(tǒng)和業(yè)務(wù)沒有任何影響,從而實現(xiàn)網(wǎng)站業(yè)務(wù)的可擴(kuò)展性設(shè)計。kQM28資訊網(wǎng)——每日最新資訊28at.com

例如,我們商城系統(tǒng)分為用戶、訂單、財務(wù)、倉儲、消息通知、物流、風(fēng)控等多個服務(wù)。用戶在完成下單后,需要調(diào)用財務(wù)(扣款)、倉儲(庫存管理)、物流(發(fā)貨)、消息通知(通知用戶發(fā)貨)、風(fēng)控(風(fēng)險評估)等服務(wù)。使用消息隊列后,下單操作和后續(xù)的扣款、發(fā)貨、通知等操作就解耦了,下單完成發(fā)送一個消息到消息隊列,需要用到的地方去訂閱這個消息進(jìn)行消息即可。kQM28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片kQM28資訊網(wǎng)——每日最新資訊28at.com

另外,為了避免消息隊列服務(wù)器宕機(jī)造成消息丟失,會將成功發(fā)送到消息隊列的消息存儲在消息生產(chǎn)者服務(wù)器上,等消息真正被消費者服務(wù)器處理后才刪除消息。在消息隊列服務(wù)器宕機(jī)后,生產(chǎn)者服務(wù)器會選擇分布式消息隊列服務(wù)器集群中的其他服務(wù)器發(fā)布消息。kQM28資訊網(wǎng)——每日最新資訊28at.com

備注: 不要認(rèn)為消息隊列只能利用發(fā)布-訂閱模式工作,只不過在解耦這個特定業(yè)務(wù)環(huán)境下是使用發(fā)布-訂閱模式的。除了發(fā)布-訂閱模式,還有點對點訂閱模式(一個消息只有一個消費者),我們比較常用的是發(fā)布-訂閱模式。另外,這兩種消息模型是 JMS 提供的,AMQP 協(xié)議還提供了另外 5 種消息模型。kQM28資訊網(wǎng)——每日最新資訊28at.com

實現(xiàn)分布式事務(wù)

分布式事務(wù)的解決方案之一就是 MQ 事務(wù)。kQM28資訊網(wǎng)——每日最新資訊28at.com

RocketMQ、 Kafka、Pulsar、QMQ 都提供了事務(wù)相關(guān)的功能。事務(wù)允許事件流應(yīng)用將消費,處理,生產(chǎn)消息整個過程定義為一個原子操作。kQM28資訊網(wǎng)——每日最新資訊28at.com

RocketMQ 事務(wù)消息原理如下圖所示:kQM28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片kQM28資訊網(wǎng)——每日最新資訊28at.com

順序保證

在很多應(yīng)用場景中,處理數(shù)據(jù)的順序至關(guān)重要。消息隊列保證數(shù)據(jù)按照特定的順序被處理,適用于那些對數(shù)據(jù)順序有嚴(yán)格要求的場景。大部分消息隊列,例如 RocketMQ、RabbitMQ、Pulsar、Kafka,都支持順序消息。kQM28資訊網(wǎng)——每日最新資訊28at.com

延時/定時處理

消息發(fā)送后不會立即被消費,而是指定一個時間,到時間后再消費。大部分消息隊列,例如 RocketMQ、RabbitMQ、Pulsar、Kafka,都支持定時/延時消息。kQM28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片kQM28資訊網(wǎng)——每日最新資訊28at.com


kQM28資訊網(wǎng)——每日最新資訊28at.com

數(shù)據(jù)流處理

針對分布式系統(tǒng)產(chǎn)生的海量數(shù)據(jù)流,如業(yè)務(wù)日志、監(jiān)控數(shù)據(jù)、用戶行為等,消息隊列可以實時或批量收集這些數(shù)據(jù),并將其導(dǎo)入到大數(shù)據(jù)處理引擎中,實現(xiàn)高效的數(shù)據(jù)流管理和處理。kQM28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-91512-0.html面試官:消息隊列的應(yīng)用場景有哪些?

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 618 限時優(yōu)惠升級 國貨精品攀升電腦爆款超值購入

下一篇: C# 中的 this 關(guān)鍵字及其三種用法

標(biāo)簽:
  • 熱門焦點
Top