成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

簡述消息隊(duì)列在電商系統(tǒng)使用場景以及工作模式

Honwhy / 1607人閱讀

摘要:概述概述消息隊(duì)列,是分布式系統(tǒng)中重要的組件,是一種進(jìn)程間通信或者是同一進(jìn)程的不同線程的通信方式。消息隊(duì)列的使用場景消息隊(duì)列的使用場景異步處理流量控制應(yīng)用解耦應(yīng)用解耦應(yīng)用解耦消息隊(duì)列的一個(gè)作用就是實(shí)現(xiàn)系統(tǒng)應(yīng)用之間的解耦。

概述

消息隊(duì)列(Message Queue),是分布式系統(tǒng)中重要的組件,是一種進(jìn)程間通信或者是同一進(jìn)程的不同線程的通信方式。和 http 同步協(xié)議不同的是,消息隊(duì)列是一種異步的通信協(xié)議,不需要立即獲得結(jié)果。

消息隊(duì)列的使用場景

  • 異步處理
  • 流量控制
  • 應(yīng)用解耦

應(yīng)用解耦

消息隊(duì)列的一個(gè)作用就是實(shí)現(xiàn)系統(tǒng)應(yīng)用之間的解耦。舉例一下電商系統(tǒng)的中的訂單系統(tǒng)。
當(dāng)創(chuàng)建一個(gè)訂單時(shí):

  1. 發(fā)起支付
  2. 扣減庫存
  3. 發(fā)消息告知用戶
  4. 更新統(tǒng)計(jì)數(shù)據(jù)

這些訂單下游的系統(tǒng)都需要實(shí)時(shí)獲得訂單數(shù)據(jù),隨著業(yè)務(wù)量的增大和業(yè)務(wù)的變更,有一段時(shí)間不需要發(fā)消息給客戶,或者需要添加功能,每次都需要不斷的調(diào)式訂單系統(tǒng)和下游系統(tǒng)。

引入消息隊(duì)列后,訂單服務(wù)在創(chuàng)建訂單時(shí)發(fā)送一條信息到消息隊(duì)列主題 Order 中,所有的下游都訂閱主題Order,這樣無論增加、減少下游系統(tǒng)還是下游系統(tǒng)的功能如何變化,訂單服務(wù)都不需要做更改了,實(shí)現(xiàn)了訂單服務(wù)和下游服務(wù)的解耦。

異步處理

異步處理是將很多串行進(jìn)行的步驟轉(zhuǎn)成異步處理,還是已訂單系統(tǒng)為例,下單訂單需要?jiǎng)?chuàng)建訂單和鎖定庫存,確定本次請(qǐng)求后馬上給用戶返回響應(yīng),然后把后續(xù)請(qǐng)求的數(shù)據(jù)的都在消息隊(duì)列,由消息隊(duì)列異步處理。

這樣把五個(gè)步驟減少為兩個(gè)步驟,假設(shè)每個(gè)步驟處理時(shí)間需要500ms,在不考慮網(wǎng)絡(luò)延遲的情況下:

串行處理: 500 * 5 = 2500ms
并行處理:500 * 2 = 1000ms

系統(tǒng)響應(yīng)時(shí)間縮短一半以上。這樣響應(yīng)速度更快,而且把請(qǐng)求放在后續(xù)操作,可以充分利用更多的資源處理請(qǐng)求。
所以我們可以看到,實(shí)現(xiàn)異步操作的服務(wù):

  • 更快地返回結(jié)果
  • 減少等待時(shí)間,提升系統(tǒng)總體性能

流量控制

在購物網(wǎng)站的做一個(gè)秒殺活動(dòng),平時(shí)網(wǎng)站能支撐每秒1000次并發(fā)請(qǐng)求,但是電商秒殺一下請(qǐng)求猛增到每秒3000次請(qǐng)求,多出來的請(qǐng)求,可能直接讓系統(tǒng)宕機(jī)。
所以我們就需要使用消息隊(duì)列來控制流量,當(dāng)系統(tǒng)短時(shí)間接收到大量請(qǐng)求時(shí),會(huì)先將請(qǐng)求堆積到消息隊(duì)列上,后端服務(wù)從消息隊(duì)列上消費(fèi)數(shù)據(jù),消息隊(duì)列相對(duì)于給后端服務(wù)做了一次緩沖。

優(yōu)缺點(diǎn)

上面的概述總結(jié)起來有個(gè)三個(gè)優(yōu)點(diǎn):異步、削峰和解耦。
缺點(diǎn)有以下幾個(gè):

  • 系統(tǒng)可用性降低
  • 增加系統(tǒng)復(fù)雜度
  • 可能會(huì)數(shù)據(jù)一致性問題,比如數(shù)據(jù)丟失,數(shù)據(jù)重復(fù)傳輸

RabbitMQ消息隊(duì)列五種工作模式

rabbitmq官網(wǎng)教程上介紹了幾種工作模式,

簡單(simple)模式

The simplest thing that does something

從上面的示意圖看出來 simple 模式有以下幾個(gè)特征:

  • 只有一個(gè)生產(chǎn)者、一個(gè)消費(fèi)者和一個(gè)隊(duì)列
  • 生產(chǎn)者和消費(fèi)者在發(fā)送和接收消息時(shí),只需要指定隊(duì)列名稱,而不需要發(fā)送那個(gè) Exchange 交換機(jī)。

工作(Work)模式


在多個(gè)消費(fèi)者之間分配任務(wù)(競爭消費(fèi)者模式
創(chuàng)建一個(gè)工作隊(duì)列,添加多個(gè)消費(fèi)者共同消費(fèi)工作隊(duì)列上的任務(wù)。每一個(gè)消息都給一個(gè)消費(fèi)者消費(fèi)

發(fā)布訂閱(Publish/Subscribe)模式


工作模式中每個(gè)消息只能被一個(gè)消費(fèi)者消費(fèi),發(fā)布訂閱模式是每個(gè)消息同時(shí)給多個(gè)消費(fèi)者消費(fèi)。
上圖中的X表示Exchange 交換器,Exchange 類型有:Direct、Topic、Headers和Fanout。

  • 發(fā)布訂閱用的是 Fanout
  • Fanout 是不需要指定具體的隊(duì)列名,Exchange 會(huì)將消息轉(zhuǎn)發(fā)所有的綁定的隊(duì)列

路由(Routing)模式


路由模式中的交換器類型為 direct,在同一個(gè)交換器,由生產(chǎn)者指定指定目標(biāo)隊(duì)列。

  • 指定規(guī)則按照 RoutingKey 指定
  • 消費(fèi)者通過 BindingKey 綁定自己接收消息隊(duì)列
  • 只有 RoutingKey 和 BindingKey 匹配隊(duì)列才會(huì)收到信息

RoutingKey 是生產(chǎn)者指定 Exchange 路由到哪個(gè)隊(duì)列,BindingKey 用于消費(fèi)者綁定到某個(gè)隊(duì)列

主題(Topic)模式


主題模式是根據(jù)通配符綁定隊(duì)列,其中 * 可以替換任務(wù)一個(gè)標(biāo)識(shí)符,# 可以替換多個(gè)標(biāo)識(shí)符,通配符和名稱使用 . 隔開。

  • 主題模式的 Exchange 類型為 topic
  • 每個(gè)消息可以被多個(gè)隊(duì)列消費(fèi)

參考

如果覺得文章對(duì)你有幫助的話,請(qǐng)點(diǎn)個(gè)推薦吧!!!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/123763.html

相關(guān)文章

  • 史上最全阿里 Java 面試題總結(jié)

    摘要:以下為大家整理了阿里巴巴史上最全的面試題,涉及大量面試知識(shí)點(diǎn)和相關(guān)試題。的內(nèi)存結(jié)構(gòu),和比例。多線程多線程的幾種實(shí)現(xiàn)方式,什么是線程安全。點(diǎn)擊這里有一套答案版的多線程試題。線上系統(tǒng)突然變得異常緩慢,你如何查找問題。 以下為大家整理了阿里巴巴史上最全的 Java 面試題,涉及大量 Java 面試知識(shí)點(diǎn)和相關(guān)試題。 JAVA基礎(chǔ) JAVA中的幾種基本數(shù)據(jù)類型是什么,各自占用多少字節(jié)。 S...

    winterdawn 評(píng)論0 收藏0
  • 【最全】Java 進(jìn)階面試總結(jié)

    摘要:這里有一份面試題相關(guān)總結(jié),涉及高并發(fā)分布式高可用相關(guān)知識(shí)點(diǎn),在此分享給大家,希望大家能拿到一份理想的知識(shí)點(diǎn)會(huì)陸續(xù)更新在上,覺得還算湊和的話可以關(guān)注一下噢高并發(fā)架構(gòu)消息隊(duì)列為什么使用消息隊(duì)列消息隊(duì)列有什么優(yōu)點(diǎn)和缺點(diǎn)都有什么優(yōu)點(diǎn)和缺點(diǎn)如何保證消 這里有一份面試題相關(guān)總結(jié),涉及高并發(fā)、分布式、高可用相關(guān)知識(shí)點(diǎn),在此分享給大家,希望大家能拿到一份理想的 Offer! 知識(shí)點(diǎn)會(huì)陸續(xù)更新在 Git...

    nifhlheimr 評(píng)論0 收藏0
  • 簡述 ZAB 協(xié)議 以及 zookeeper

    摘要:只允許有一個(gè)主進(jìn)程接受客戶事務(wù)請(qǐng)求并處理,收到請(qǐng)求后,將其轉(zhuǎn)化為事務(wù)。并開啟新一輪選舉,新的會(huì)和過半的進(jìn)行同步數(shù)據(jù)。同步結(jié)束時(shí),切換為消息廣播模式。若非節(jié)點(diǎn)收到客戶請(qǐng)求,則該節(jié)點(diǎn)會(huì)將該請(qǐng)求發(fā)送到服務(wù)器上。 zookeeper 它為分布式應(yīng)用提供了高效可靠的分布式協(xié)調(diào)服務(wù)。 實(shí)現(xiàn)依賴于 ZAB協(xié)議,實(shí)現(xiàn)了主備模式架構(gòu)用來保持集群中數(shù)據(jù)的一致性 Zookeeper 將所有數(shù)據(jù)存放在 內(nèi)存...

    lwx12525 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<