直播app開發(fā),設(shè)計(jì)消息中間件該考慮的問題
為保證直播app開發(fā)性能,不僅要使用大量成熟的技術(shù)手段,還要合理應(yīng)用各種消息中間件。具備高并發(fā)特性的消息中間件可以為系統(tǒng)提供高質(zhì)量服務(wù)給予更多支持,在直播app開發(fā)時,設(shè)計(jì)消息中間件該考慮哪些問題呢?

一、生產(chǎn)者、消費(fèi)者模型
所謂的生產(chǎn)者、消費(fèi)者模型是指消息中間件在設(shè)計(jì)時既要能讓其他應(yīng)用生產(chǎn)消息,又要能讓其他應(yīng)用消費(fèi)消息。有時生產(chǎn)者生產(chǎn)的消息可能會超過消費(fèi)者的消費(fèi)能力,此時多余的消息應(yīng)該由消息中間件來決定存儲在什么地方。
就消息存儲而言,我們需要考慮的問題包含:
1、存在在什么地方,是存儲在內(nèi)存還是存儲在磁盤;
2、以什么方式進(jìn)行存儲,是立即寫入直播app開發(fā)的磁盤,還是先存儲到內(nèi)存中,隔一段時間后再寫入磁盤;
3、磁盤文件應(yīng)該如何切分;
4、消息中間件應(yīng)該如何將存儲的數(shù)據(jù)投遞到對應(yīng)的消費(fèi)者。
二、支持分布式架構(gòu)
為了實(shí)現(xiàn)高并發(fā)特性,在設(shè)計(jì)消息中間件時需要讓消息中間件能夠承載高級別的數(shù)據(jù)高并發(fā)和高吞吐量的寫入操作,而達(dá)到該目的最好的方式就是采用分布式架構(gòu)。
在直播app開發(fā)中,實(shí)現(xiàn)分布式架構(gòu)的消息中間件,需要考慮存儲分片、自動擴(kuò)容、自動數(shù)據(jù)負(fù)載均衡遷移等問題。

三、數(shù)據(jù)高可用
在直播app開發(fā)時,要想實(shí)現(xiàn)高可用性能,可以利用本地堆內(nèi)存、分布式緩存、數(shù)據(jù)備份等方式,這些方式的實(shí)現(xiàn)邏輯主要在于任何一個存儲節(jié)點(diǎn)出現(xiàn)問題,都不會對整體系統(tǒng)的高可用造成影響,這種實(shí)現(xiàn)邏輯在設(shè)計(jì)消息中間件時可作為參考。
四、消息數(shù)據(jù)不丟失
為保證消息數(shù)據(jù)不丟失,在設(shè)計(jì)消息中間件時需要實(shí)現(xiàn)ACK機(jī)制,常用的ACK機(jī)制有兩種:
1、對應(yīng)生產(chǎn)端的ACK機(jī)制
如果直播app開發(fā)中的消息中間件一直沒有接收到ACK消息,則讓生產(chǎn)者重新發(fā)送一條消息,以保證生產(chǎn)消息成功。
2、對應(yīng)消費(fèi)端的ACK機(jī)制
當(dāng)消費(fèi)端消費(fèi)了某消息后,就要返回一個ACK給消息中間件,此時消息中間件才能將對應(yīng)的消息刪除,如果消費(fèi)者遲遲未返回ACK,則需要消息中間件將該消息重新發(fā)送給其他消費(fèi)端,以保證該消息被成功處理。

在直播app開發(fā)時,不同的消息中間件會發(fā)揮不同的價值,設(shè)計(jì)一個高并發(fā)的消息中間件更能為直播app開發(fā)的發(fā)展提供助力。關(guān)于直播app開發(fā)其實(shí)還有很多需要我們注意的細(xì)節(jié),還有很多需要我們考慮的問題。
聲明:本文由云豹科技原創(chuàng),轉(zhuǎn)載請注明作者名及原文鏈接,否則視為侵權(quán)