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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

分布式--消息中间件

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

1.什么是消息中間件

? ? ? ?消息中間件是指:利用高效可靠的消息傳遞機(jī)制進(jìn)行與平臺無關(guān)的數(shù)據(jù)交流,并基于數(shù)據(jù)通信來進(jìn)行分布式系統(tǒng)的集成。通過提供消息傳遞和消息排隊模型,可以在分布式架構(gòu)下擴(kuò)展進(jìn)程之間的通信。

2.消息中間件能做什么

? ? ? ?消息中間件主要解決的就是分布式系統(tǒng)之間消息傳遞的問題,它能夠屏蔽各種平臺以及協(xié)議之間的特性,實(shí)現(xiàn)應(yīng)用程序之間的協(xié)同。

? ? ? ?使用消息中間件,主要有如下兩個特點(diǎn):①異步化? ?②解耦。我們可以從如下兩個實(shí)例來入手,具體了解消息中間件在項目中的具體使用場景。

場景一:電商平臺用戶注冊功能

? ? ? ?用戶注冊這一服務(wù),并不單單只是向數(shù)據(jù)庫中insert一條數(shù)據(jù)即可,有些時候比如我們使用郵箱來注冊,還需要發(fā)送激活郵件等操作。新用戶還有可能會給你發(fā)送新人紅包、發(fā)送短信等來提示你注冊成功等等操作。

? ? ? ?我們從上圖這個注冊服務(wù)可以看到,信息入庫、發(fā)送激活短信...等每一個操作都是獨(dú)立的。同時,基于領(lǐng)域劃分(請參考:領(lǐng)域驅(qū)動設(shè)(DDD))以后,發(fā)送郵件短信、發(fā)送新人紅包、發(fā)送注冊成功短信等都屬于不同的子域。所以我們可以對這些子模塊來異步化執(zhí)行,類似于多線程并行處理的概念。

? ? ? ?如何實(shí)現(xiàn)異步化呢?多線程當(dāng)然可以實(shí)現(xiàn),只是消息的持久化消息的重發(fā)這些條件,多線程并不能滿足。所以需要借助一些開源中間件來解決。而分布式消息隊列就是一個非常好的解決辦法,引入分布式消息隊列以后,架構(gòu)圖就變成這樣了(下圖是異步消息隊列的場景)。通過引入分布式隊列,就能夠大大提升程序的處理效率,并且還解決了各個模塊之間的耦合問題。

? ? ?? 具體步驟為:用戶注冊成功后,發(fā)送一條信息到消息中間件,其他的幾個子域如果有需要的話,只需要訂閱/關(guān)注該消息中間件,就能夠?qū)崿F(xiàn)異步化操作了。這就是分布式消息隊列異步化 && 解耦 的一個場景。

? ? ? 注冊接口并不依賴其他三個子域的操作的結(jié)果。成功或失敗,與主流程是沒有任何影響的。做解耦,只需要在當(dāng)前功能關(guān)心核心領(lǐng)域即可,不需要關(guān)心其他子域,只需要保證其他子域的正確性即可。

? ? ? ?假如說這里面每一部操作都需要消耗1s,按照基礎(chǔ)一個Conntroller開發(fā),將這4步都寫在一個Controller中,整個注冊過程就需要消耗4s才能響應(yīng)給客戶。使用消息中間件之后,則整個過程只需要消耗1s多,便能夠響應(yīng)給客戶,明顯縮短了響應(yīng)時間,這就是異步化所帶來的好處。

場景二:流量削峰(秒殺、搶購情景)

? ? ? ?比如在電商平臺的秒殺場景下,流量會非常大。通過消息隊列的方式可以很好的緩解高流量的問題,異步的消息隊列,可以通過排隊的機(jī)制,來很好的解決這一問題。

? ? ? 具體步驟如下:①用戶提交過來的請求,先寫入到消息隊列。消息隊列是有長度的,如果消息隊列長度超過指定長度,直接拋棄;?②秒殺的具體核心處理業(yè)務(wù),接收消息隊列中消息,并進(jìn)行下一步處理。

其他場景使用:??

? ? ? ?消息中間件還有更多應(yīng)用場景,比如在弱一致性事務(wù)模型中,可以采用分布式消息隊列的實(shí)現(xiàn)最大能力通知方式來實(shí)現(xiàn)數(shù)據(jù)的最終一致性等等?

3.常用的消息中間件有哪些

①ActiveMQ

? ? ? ?ActiveMQ 是Apache出品,最流行的,能力強(qiáng)的開源消息總線。ActiveMQ 是一個完全支持JMS1.1和J2EE 1.4規(guī)范的 JMS Provider實(shí)現(xiàn)。官網(wǎng):https://activemq.apache.org/

②RabbitMQ

? ? ? ? AMQP協(xié)議的領(lǐng)導(dǎo)實(shí)現(xiàn),支持多種場景。淘寶的MySQL集群內(nèi)部有使用它進(jìn)行通訊,OpenStack開源云平臺的通信組件,最先在金融行業(yè)得到運(yùn)用。官網(wǎng):http://www.rabbitmq.com/

③ZeroMQ

? ? ? ? 史上最快的消息隊列系統(tǒng),這屬于是一個類庫,直接使用能不快嗎。官網(wǎng):https://zeromq.org/

④Kafka

? ? ? ?Apache下的一個子項目 。特點(diǎn):高吞吐,在一臺普通的服務(wù)器上即可以達(dá)到10w/s的吞吐速率;完全的分布式系統(tǒng)。適合處理海量數(shù)據(jù)。官網(wǎng):http://kafka.apache.org/

⑤RocketMQ

? ? ? ? RocketMQ是阿里開源的消息中間件,目前已經(jīng)捐獻(xiàn)給Apache基金會。它是由Java語言開發(fā)的,具備高吞吐量、高可用性、適合大規(guī)模分布式系統(tǒng)應(yīng)用等特點(diǎn),經(jīng)歷過雙11的洗禮,實(shí)力不容小覷。官網(wǎng):http://rocketmq.apache.org/

其他一些消息中間件,使用也不是很多,這里就不再過多羅列了

END

總結(jié)

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

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