消息隊(duì)列是指能夠提供消息排隊(duì)消費(fèi)功能的軟件程序,是消息隊(duì)列中間件的一部分。消息隊(duì)列中間件是分布式系統(tǒng)中重要的組件。接下來(lái)要分享的小編就給大家講解消息隊(duì)列的優(yōu)勢(shì)、類型以及使用場(chǎng)景。
消息隊(duì)列的用途:
主要解決應(yīng)用解耦、異步消息、流量削鋒等問(wèn)題,實(shí)現(xiàn)高性能、高可用、可伸縮和最終一致性架構(gòu)。
消息隊(duì)列的常見(jiàn)類型
1.Kafka:由Apache軟件基金會(huì)開(kāi)發(fā)的一個(gè)開(kāi)源流處理平臺(tái),由Scala和Java編寫,是一種高吞吐量的分布式發(fā)布訂閱消息系統(tǒng),支持單機(jī)每秒百萬(wàn)并發(fā)。
2.RocketMQ:阿里開(kāi)源的消息中間件,是一款低延遲、高可靠、可伸縮、易于使用的消息中間件。
3.RabbitMQ:由Erlang(有著和原生Socket一樣低的延遲)語(yǔ)言開(kāi)發(fā)基于AMQP協(xié)議的開(kāi)源消息隊(duì)列系統(tǒng),能保證消息的可靠性、穩(wěn)定性、安全性。
消息隊(duì)列應(yīng)用場(chǎng)景
1.應(yīng)用解耦。消息隊(duì)列可以使消費(fèi)者和生產(chǎn)者直接互不干涉、互不影響,只需要把消息發(fā)送到隊(duì)列即可,而且可獨(dú)立的擴(kuò)展或修改兩邊的處理過(guò)程。常見(jiàn)場(chǎng)景:用戶下單后,訂單系統(tǒng)需要通知庫(kù)存系統(tǒng)。
2.流量削鋒。當(dāng)客戶端訪問(wèn)量突然劇增,對(duì)服務(wù)器的訪問(wèn)已經(jīng)超過(guò)服務(wù)所能處理的最大峰值,甚至導(dǎo)致服務(wù)器超時(shí)負(fù)載崩潰,使用消息隊(duì)列可以解決這個(gè)問(wèn)題,可以通過(guò)控制消費(fèi)者的處理速度和生產(chǎn)者可進(jìn)入消息隊(duì)列的數(shù)量等來(lái)避免峰值問(wèn)題。常見(jiàn)場(chǎng)景:秒殺活動(dòng),一般會(huì)因?yàn)榱髁窟^(guò)大導(dǎo)致流量暴增,應(yīng)用掛掉。
3.異步通信。消息隊(duì)列提供了異步處理機(jī)制,可以把消息放在隊(duì)列中并不立即處理,需要的時(shí)候處理,或者異步慢慢處理,一些不重要的發(fā)送短信和郵箱功能可以使用。常見(jiàn)場(chǎng)景:用戶注冊(cè)后需要發(fā)注冊(cè)郵件和注冊(cè)短信。
4.排序保證。消息隊(duì)列可以控制數(shù)據(jù)處理的順序,因?yàn)橄㈥?duì)列本身使用的是隊(duì)列這個(gè)數(shù)據(jù)結(jié)構(gòu),F(xiàn)IFO(先進(jìn)選出),在一些場(chǎng)景數(shù)據(jù)處理的順序很重要,比如商品下單順序等。
以上就是北大青鳥(niǎo)長(zhǎng)沙麓谷校區(qū)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“Java菜鳥(niǎo)教程之消息隊(duì)列”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。