直播app開發(fā)采用分布式架構(gòu),導致數(shù)據(jù)一致性問題的原因
由于單個服務(wù)器存在性能瓶頸,并不能很好的應(yīng)對高并發(fā)場景,所以在直播app開發(fā)時通常會采用分布式架構(gòu),將系統(tǒng)功能拆分至不同的服務(wù)器上,以實現(xiàn)更好的使用效果。不過在直播app開發(fā)時,應(yīng)該如何進行系統(tǒng)拆分呢?

一、系統(tǒng)可拆分模塊
1、消息推送服務(wù)器
主要是指直播app開發(fā)中給用戶推送直播間內(nèi)聊天消息和私信消息的模塊。
2、業(yè)務(wù)服務(wù)器
主要包含直播app開發(fā)中的業(yè)務(wù)部分、貨幣系統(tǒng)、禮物系統(tǒng)、好友關(guān)系、直播管理等模塊。
3、視頻服務(wù)器
主要是對直播app開發(fā)中的視頻進行管理的模塊,像視頻的直播、點播、轉(zhuǎn)碼、存儲等。
4、Mysql服務(wù)器
主要存儲直播app開發(fā)中的靜態(tài)數(shù)據(jù),像用戶信息、直播信息、賬戶信息等。
5、Redis服務(wù)器
主要存儲直播app開發(fā)中的動態(tài)數(shù)據(jù),像關(guān)注關(guān)系、直播間內(nèi)實時交互的數(shù)據(jù)等。
6、IM即時聊天服務(wù)器
使用Node.js服務(wù)自主搭建部署的聊天服務(wù)。
7、視頻流服務(wù)器
在直播app開發(fā)時,如果用戶數(shù)量不多,覆蓋范圍較小,可以自行搭建部署視頻流服務(wù)器,當然如果面向用戶數(shù)量大且覆蓋范圍廣泛的話,最好還是使用第三方的CDN服務(wù),節(jié)省成本。

二、導致數(shù)據(jù)一致性問題的原因
在直播app開發(fā)采用分布式架構(gòu)時,就不得不考慮數(shù)據(jù)一致性問題了,一般導致數(shù)據(jù)一致性問題的原因都有哪些呢?
1、服務(wù)器質(zhì)量和系統(tǒng)能力
由于分布式架構(gòu)中所使用的服務(wù)器配置并不一定相同,所以部署在不同服務(wù)器上的系統(tǒng)功能在處理請求方面實力也不同。
2、不可靠的網(wǎng)絡(luò)
由于直播app開發(fā)時所覆蓋的地域范圍比較廣,所以有些系統(tǒng)服務(wù)可能會部署在不同的國家和地區(qū),更何況本身網(wǎng)絡(luò)就存在不可靠性,數(shù)據(jù)一致性問題發(fā)生的概率自然而然的就會增加。
3、單點故障
由于直播app開發(fā)中采用了分布式架構(gòu),所以節(jié)點的數(shù)量肯定比單體架構(gòu)要多,可是節(jié)點的增加也就會導致單點故障發(fā)生概率的增加,一旦出現(xiàn)了單點故障,就很難保證數(shù)據(jù)的一致性了。

通過上述分析可知,雖然分布式架構(gòu)能提升系統(tǒng)應(yīng)對高并發(fā)的能力,但也引發(fā)了數(shù)據(jù)一致性問題,在解決數(shù)據(jù)一致性問題時,我們需要根據(jù)實際產(chǎn)生問題的原因選擇合適的策略。雖然我們無法保證直播app開發(fā)是十全十美的,但是我們可以通過一定的優(yōu)化方案盡量降低問題發(fā)生時對用戶的影響。
聲明:本文由云豹科技原創(chuàng),轉(zhuǎn)載請注明作者名及原文鏈接,否則視為侵權(quán)