日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

消息中间件详解

發(fā)布時(shí)間:2023/12/29 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 消息中间件详解 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

    • 概述
      • 使用場(chǎng)景
    • 消息中間件
      • 協(xié)議
      • 消息分發(fā)策略機(jī)制
      • 實(shí)現(xiàn)方式
      • 高可用機(jī)制
        • 集群模式1 - Master - Slave 主從共享部署
        • 集群模式2 - Master - Slave 主從同步部署
        • 集群模式3 - 多主集群同步部署
        • 集群模式4 - 多主集群轉(zhuǎn)發(fā)部署
        • 集群模式5 - Master - Slave 與 Breoker - Cluster 組合

概述

消息中間件是基于隊(duì)列與消息傳遞技術(shù),在網(wǎng)絡(luò)環(huán)境中為應(yīng)用系統(tǒng)提供同步或異步、可靠的消息傳輸?shù)闹涡攒浖到y(tǒng)。

那 MQ 解決了什么問題?

對(duì)于電商app來說,顧客下單后要扣減商品庫存,還要更新訂單狀態(tài)等一系列操作。當(dāng)并發(fā)量大的時(shí)候,服務(wù)器磁盤、IO、CPU load 會(huì)很高,因此有的時(shí)候需要一個(gè)相對(duì)較長的時(shí)間間隔才能完成上述的一系列操作。如果用戶提交完訂單,讓用戶等待幾秒才能成功,對(duì)于用戶來說,會(huì)很不耐煩,甚至?xí)魇Т罅坑脩簟?/font>

如果有了 MQ ,可以讓系統(tǒng)間的通信變?yōu)楫惒酵ㄐ?#xff0c;系統(tǒng)A 發(fā)個(gè)消息到 MQ,系統(tǒng) B什么時(shí)候獲取消息進(jìn)行處理,系統(tǒng)A不用管,系統(tǒng)A向MQ發(fā)送完消息只需要給用戶及時(shí)反饋即可,剩下的操作系統(tǒng)B可能會(huì)在未來的幾秒、幾分鐘甚至幾小時(shí)后才進(jìn)行處理。


使用場(chǎng)景

  • 跨系統(tǒng)數(shù)據(jù)傳遞
  • 高并發(fā)流量削峰
  • 數(shù)據(jù)分發(fā)和異步處理
  • 大數(shù)據(jù)分析與傳遞
  • 分布式事務(wù)

消息中間件

協(xié)議

AMQP(Advanced Message Queuing Protocol) 是高級(jí)消息隊(duì)列協(xié)議,是一個(gè)提供統(tǒng)一消息服務(wù)的應(yīng)用層標(biāo)準(zhǔn)高級(jí)消息隊(duì)列協(xié)議,是應(yīng)用協(xié)議的一個(gè)開放標(biāo)準(zhǔn),為面向消息的中間件設(shè)計(jì)。基于此協(xié)議的客戶端與中間件可傳遞消息,并不受客戶端/中間件不同產(chǎn)品,不同的開發(fā)語言等條件的限制。

常見的消息中間件協(xié)議有:OpenWire、AMQP、MQTT、Kafka、OpenMessage

大部分消息中間件采用的是 AMQP 協(xié)議,那為什么不用 http 協(xié)議?

  • http請(qǐng)求報(bào)文頭和響應(yīng)報(bào)文頭比較復(fù)雜,包含了 cookie,數(shù)據(jù)的加密解密、狀態(tài)碼、響應(yīng)碼等附加的功能,但對(duì)于一個(gè)消息而言,不需要這么復(fù)雜,沒有這個(gè)必要性,它其實(shí)就是負(fù)責(zé)數(shù)據(jù)傳遞、存儲(chǔ)、分發(fā)就可以,追求的是高性能、盡量簡潔、快速。
  • 大部分情況下 http 都是短連接,在實(shí)際交互中,一個(gè)請(qǐng)求到響應(yīng)很有可能中斷,沒進(jìn)行持久化中斷的話,會(huì)造成請(qǐng)求丟失。不利于消息中間件的業(yè)務(wù)場(chǎng)景,消息中間件可能是一個(gè)長期的獲取消息的過程,出現(xiàn)問題和故障要對(duì)數(shù)據(jù)或消息進(jìn)行持久化,目的是為了保證消息和數(shù)據(jù)的高可靠性。
  • 實(shí)際上,AMQP是基于以上原因在 TCP/IP 協(xié)議基礎(chǔ)上設(shè)計(jì)的協(xié)議。

    AMQP特性:

    • 分布式事務(wù)支持
    • 消息的持久化支持
    • 高性能和高可靠的消息處理優(yōu)勢(shì)

    消息分發(fā)策略機(jī)制

    ActiveMQRabbitMQKafkaRocketMQ
    發(fā)布訂閱支持支持支持支持
    輪詢分發(fā)支持支持支持/
    公平分發(fā)/支持支持/
    重發(fā)支持支持/支持
    消息拉取/支持支持支持

    實(shí)現(xiàn)方式

    ActiveMQRabbitMQRocketMQKafka
    單機(jī)吞吐量萬級(jí)萬級(jí)10萬級(jí),高吞吐10萬級(jí),高吞吐
    時(shí)效性ms級(jí)微秒級(jí),延遲低ms級(jí)ms級(jí)以內(nèi)
    可用性高,基于主從架構(gòu)高,基于主從架構(gòu)非常高,分布式架構(gòu)非常高,分布式架構(gòu)
    可靠性較低的概率數(shù)據(jù)丟失基本不丟失經(jīng)過參數(shù)優(yōu)化配置,可以做到0丟失經(jīng)過參數(shù)優(yōu)化配置,可以做到0丟失
    功能支持功能完備并發(fā)能力強(qiáng),性能好,延遲低功能完善,擴(kuò)展性好支持簡單MQ功能,大數(shù)據(jù)領(lǐng)域被大規(guī)模使用

    高可用機(jī)制

    是指產(chǎn)品在規(guī)定的條件和規(guī)定的時(shí)間內(nèi)處于可執(zhí)行規(guī)定功能狀態(tài)的能力。當(dāng)業(yè)務(wù)量增加時(shí),請(qǐng)求也過大,一臺(tái)消息中間件服務(wù)器會(huì)觸及硬件的極限,一臺(tái)消息服務(wù)器已經(jīng)無法滿足業(yè)務(wù)的需求,所以消息中間件必須支持集群部署,來達(dá)到高可用的目的。


    集群模式1 - Master - Slave 主從共享部署

    生產(chǎn)者將消息寫入到 master 節(jié)點(diǎn),slave 節(jié)點(diǎn)連接 master 隊(duì)列共享一個(gè)數(shù)據(jù)區(qū)域。一旦 master 掛掉,生產(chǎn)者就無法將消息發(fā)送到隊(duì)列。

    集群模式2 - Master - Slave 主從同步部署

    生產(chǎn)者將消息寫入到 master 節(jié)點(diǎn),master 會(huì)同步數(shù)據(jù)到 slave 形成副本,如果有多個(gè)消費(fèi)者就可以去不同的節(jié)點(diǎn)進(jìn)行消費(fèi)。但是消息的拷貝和同步會(huì)占用很大的帶寬和網(wǎng)絡(luò)資源。


    集群模式3 - 多主集群同步部署

    生產(chǎn)者將消息寫入到master和slave所有節(jié)點(diǎn),消費(fèi)者也可以從任意節(jié)點(diǎn)消費(fèi)消息。


    集群模式4 - 多主集群轉(zhuǎn)發(fā)部署

    生產(chǎn)者可以向任意節(jié)點(diǎn)寫入消息,如果向 broker1 中寫入消息,broker1 中會(huì)存儲(chǔ)數(shù)據(jù)的相關(guān)描述和記錄存放的位置,也就是元數(shù)據(jù)信息。broker1 會(huì)向其他的 broker 同步元數(shù)據(jù)信息。消費(fèi)者也可以從任意節(jié)點(diǎn)消費(fèi)消息,如果從 broker2 中消費(fèi)消息,broker2 自己沒有對(duì)應(yīng)的信息,可以從對(duì)應(yīng)的元數(shù)據(jù)信息中查詢,返回對(duì)應(yīng)的元消息信息。


    集群模式5 - Master - Slave 與 Breoker - Cluster 組合

    實(shí)現(xiàn)多主多從的熱備機(jī)制保證消息的高可用。

    總結(jié)

    以上是生活随笔為你收集整理的消息中间件详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。