成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

高性能網(wǎng)站實(shí)用技巧之消息隊(duì)列篇-創(chuàng)新互聯(lián)

什么是消息隊(duì)列

網(wǎng)站的建設(shè)創(chuàng)新互聯(lián)公司專注網(wǎng)站定制,經(jīng)驗(yàn)豐富,不做模板,主營網(wǎng)站定制開發(fā).小程序定制開發(fā),H5頁面制作!給你煥然一新的設(shè)計(jì)體驗(yàn)!已為成都集裝箱等企業(yè)提供專業(yè)服務(wù)。

消息隊(duì)列Message Queue)是一種進(jìn)程間通信或同一進(jìn)程的不同線程間的通信方式。進(jìn)程或者線程之間通過 消息 進(jìn)行通信,消息發(fā)送后可以立即返回,由消息系統(tǒng)來確保信息的可靠傳遞,消息發(fā)布者(生產(chǎn)者)只管把消息發(fā)布到消息隊(duì)里中而不用管誰來消費(fèi),消息使用者(消費(fèi)者)只管從消息隊(duì)列中獲取消息以進(jìn)一步處理而不用管理誰發(fā)布的消息,這樣發(fā)布者和使用者都不用知道對(duì)方的存在。

消息Message)是指在應(yīng)用之間傳送的數(shù)據(jù)。消息可以非常簡(jiǎn)單,比如只包含文本字符串,也可以很復(fù)雜,如嵌入對(duì)象。

消息隊(duì)列的特點(diǎn)

通過提供 消息傳遞消息排隊(duì) 模型,它可以在 分布式環(huán)境 下提供 應(yīng)用解耦彈性伸縮、冗余存儲(chǔ)流量削峰、異步通信、數(shù)據(jù)同步 等等功能,其作為 分布式系統(tǒng)架構(gòu) 中的一個(gè)重要組件,有著舉足輕重的地位。消息隊(duì)列主要特點(diǎn)有:

  • 異步性:將耗時(shí)的同步操作,通過以發(fā)送消息的方式,進(jìn)行了異步化處理。減少了同步等待的時(shí)間。

  • 松耦合:消息隊(duì)列減少了服務(wù)之間的耦合性,不同的服務(wù)可以通過消息隊(duì)列進(jìn)行通信,而不用關(guān)心彼此的實(shí)現(xiàn)細(xì)節(jié),只要定義好消息的格式就行

  • 分布式:通過對(duì)消費(fèi)者的橫向擴(kuò)展,降低了消息隊(duì)列阻塞的風(fēng)險(xiǎn),以及單個(gè)消費(fèi)者產(chǎn)生單點(diǎn)故障的可能性。

  • 可靠性:消息隊(duì)列一般會(huì)把接收的消息存儲(chǔ)到本地硬盤上(當(dāng)消息被處理完之后,存儲(chǔ)信息根據(jù)不同的消息隊(duì)列實(shí)現(xiàn),有可能將其刪除),這樣即使應(yīng)用掛掉或者消息隊(duì)列本身掛掉,消息也能夠重新加載。

消息隊(duì)列應(yīng)用場(chǎng)景

異步處理

同步處理 是指從請(qǐng)求的發(fā)起一直到最終的處理完成期間,請(qǐng)求的調(diào)用方一直在同步阻塞等待調(diào)用的處理完成。

異步處理 處理是指在請(qǐng)求發(fā)起的處理過程中,客戶端的代碼已經(jīng)返回了,它可以繼續(xù)進(jìn)行自己的后續(xù)操作,而不需要等待調(diào)用處理完成。

對(duì)一些比較耗時(shí)且不需要即時(shí)(同步)返回操作結(jié)果的操作,可以把處理過程通過消息隊(duì)列進(jìn)行異步處理。這樣做可以推遲耗時(shí)操作的處理,使耗時(shí)操作異步化,而不必阻塞客戶端程序,客戶端的程序在得到處理結(jié)果之前可以繼續(xù)執(zhí)行,從而提高客戶端程序的處理性能。

異步處理的主要目的是 減少請(qǐng)求響應(yīng)時(shí)間,實(shí)現(xiàn)非核心流程異步化,提高系統(tǒng)響應(yīng)性能。

應(yīng)用解耦

使用消息隊(duì)列,可以有多個(gè)生產(chǎn)者發(fā)布消息,多個(gè)消費(fèi)者消費(fèi)消息,共同完成整個(gè)的業(yè)務(wù)處理邏輯,生產(chǎn)者只關(guān)心是否正確將消息寫入消息隊(duì)列,消費(fèi)者只關(guān)心從消息隊(duì)列中獲取消息,然后進(jìn)行處理邏輯,生產(chǎn)者和消費(fèi)者之間不需要直接的交互調(diào)用,沒有代碼的依賴耦合。

耦合度越低程序代碼越容易維護(hù),也容易進(jìn)行擴(kuò)展。

流量削峰

一般在秒殺活動(dòng)中廣泛使用。

在秒殺活動(dòng)中,一般由于瞬時(shí)訪問量過大,服務(wù)器瞬間接收了大量的請(qǐng)求,流量暴增,這種情況下很有可能導(dǎo)致相關(guān)系統(tǒng)無法處理請(qǐng)求甚至崩潰。為了解決這個(gè)問題,一般會(huì)在應(yīng)用的前端加入消息隊(duì)列。

  • 請(qǐng)求先寫入消息隊(duì)列,而不是由業(yè)務(wù)系統(tǒng)直接處理,做了一次緩沖,極大的減少了業(yè)務(wù)處理系統(tǒng)的壓力。

  • 隊(duì)列的長(zhǎng)度可以做限制,一般秒殺活動(dòng)都是有數(shù)量限制的,后寫入隊(duì)列的用戶無法秒殺到商品,這樣的請(qǐng)求可以直接被拋棄,可以直接返回活動(dòng)已結(jié)束或商品已售完。

使用消息隊(duì)列,即便是訪問流量持續(xù)的增長(zhǎng),系統(tǒng)依然可以持續(xù)的接收請(qǐng)求。雖然生產(chǎn)者生成的消息比消費(fèi)者消費(fèi)的速度快,但是通過消息隊(duì)列進(jìn)行了緩沖,在短時(shí)間內(nèi),生產(chǎn)者和消費(fèi)者之間處理能力不會(huì)互相影響,同樣也可以保證系統(tǒng)的穩(wěn)定性。

消息通訊

消息隊(duì)列一般都內(nèi)置了高效的通信機(jī)制,因此可以用于單純的消息通訊,比如實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)消息隊(duì)列或者聊天室。

廣播

如果沒有消息隊(duì)列,每當(dāng)一個(gè)新的業(yè)務(wù)方介入,那都需要聯(lián)調(diào)一次接口。有了消息隊(duì)列,只需要關(guān)系消息是否送達(dá)了隊(duì)列,至于誰希望訂閱,是下游的事情,無疑極大地減少了開發(fā)和聯(lián)調(diào)的工作量。

日志處理

將消息隊(duì)列用在日志處理中,解決了大量日志傳輸?shù)膯栴}(如Kafka)。

消息隊(duì)列的傳輸模式

點(diǎn)對(duì)點(diǎn)模式(Point to Point)

點(diǎn)對(duì)點(diǎn)模式 用于 消息生產(chǎn)者消息消費(fèi)者 之間 點(diǎn)到點(diǎn) 的通信。消息生產(chǎn)者將消息發(fā)送到由某個(gè)名字標(biāo)識(shí)的特定隊(duì)列(Queue)。在消息傳遞給消費(fèi)者之前它被 存儲(chǔ) 在這個(gè)隊(duì)列中。隊(duì)列消息 可以放在 內(nèi)存 中也可以 持久化,以保證在消息服務(wù)出現(xiàn)故障時(shí)仍然能夠傳遞消息。

高性能網(wǎng)站實(shí)用技巧之消息隊(duì)列篇

點(diǎn)對(duì)點(diǎn)模式特點(diǎn):

  • 每個(gè)消息只有一個(gè)消費(fèi)者(Consumer),即一旦消息被消費(fèi),消息就不再在消息隊(duì)列中。

  • 生產(chǎn)者和消費(fèi)者之間沒有依賴性,生產(chǎn)者發(fā)送消息之后,不管有沒有消費(fèi)者在運(yùn)行,都不會(huì)影響到生產(chǎn)者下次發(fā)送消息。

  • 消費(fèi)者在成功接收消息之后需向隊(duì)列應(yīng)答成功,以便消息隊(duì)列刪除當(dāng)前接收的消息。

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

發(fā)布者/訂閱者 模型支持向一個(gè)特定的 消息主題 生產(chǎn)消息。 0 或多個(gè) 訂閱者 可能對(duì)接收來自 特定消息主題 的消息感興趣。

在這種模型下,發(fā)布者和訂閱者彼此不知道對(duì)方。多個(gè)消費(fèi)者可以獲得消息,在 發(fā)布者訂閱者 之間存在 時(shí)間依賴性。發(fā)布者需要建立一個(gè) 訂閱subscription),以便能夠消費(fèi)者訂閱。訂閱者 必須保持 持續(xù)的活動(dòng)狀態(tài)接收消息

高性能網(wǎng)站實(shí)用技巧之消息隊(duì)列篇

發(fā)布/點(diǎn)閱模式特點(diǎn):

  • 每個(gè)消息可以有多個(gè)訂閱者。

  • 發(fā)布者和訂閱者之間有時(shí)間上的依賴性,針對(duì)某個(gè)主題(Topic)的訂閱者,它必須創(chuàng)建一個(gè)訂閱之后,才能消費(fèi)發(fā)布者的消息。

  • 為了消費(fèi)消息,訂閱者需要提前訂閱該角色主題,并保持在線運(yùn)行。

集中消息中間件對(duì)比

目前在生產(chǎn)環(huán)境,使用較多的消息隊(duì)列有ActiveMQRabbitMQ、ZeroMQ、Kafka、MetaMQRocketMQ等。

高性能網(wǎng)站實(shí)用技巧之消息隊(duì)列篇

歡迎工作一到五年的Java工程師朋友們加入Java技術(shù)交流群:659270626
群內(nèi)提供免費(fèi)的Java架構(gòu)學(xué)習(xí)資料(里面有高可用、高并發(fā)、高性能及分布式、Jvm性能調(diào)優(yōu)、Spring源碼,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個(gè)知識(shí)點(diǎn)的架構(gòu)資料)合理利用自己每一分每一秒的時(shí)間來學(xué)習(xí)提升自己,不要再用"沒有時(shí)間“來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己一個(gè)交代!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

標(biāo)題名稱:高性能網(wǎng)站實(shí)用技巧之消息隊(duì)列篇-創(chuàng)新互聯(lián)
網(wǎng)站網(wǎng)址:http://jinyejixie.com/article8/eieip.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、關(guān)鍵詞優(yōu)化、企業(yè)網(wǎng)站制作、全網(wǎng)營銷推廣、定制網(wǎng)站建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司
仁布县| 德化县| 乌兰浩特市| 上栗县| 怀化市| 凤山县| 宜阳县| 南京市| 三江| 梁河县| 湄潭县| 海阳市| 托克托县| 洮南市| 台中县| 温州市| 洛扎县| 安仁县| 贵南县| 苏州市| 合江县| 大埔区| 扎赉特旗| 易门县| 高雄县| 红桥区| 白山市| 绥中县| 齐河县| 荆州市| 始兴县| 达州市| 东莞市| 新宁县| 阜新市| 陵川县| 涿鹿县| 略阳县| 福贡县| 宁化县| 娱乐|