微信红包的支撑架构原理是什么?
每次到過年過節(jié)的時候,我們總是會在群里發(fā)上幾個紅包,那么全國各地的人都在發(fā)紅包,服務器端要處理的請求量非常大,那么它是怎么實現(xiàn)能處理這么多請求的呢?
那么他就涉及到了以下幾個特點:
高并發(fā)
快速響應
高處理量
那么我們?nèi)绾螌崿F(xiàn)高并發(fā)?
說到高并發(fā),我們一般采用的使用集群的方式解決單個服務器硬件上的不足,集群可以采用nginx進行負載均衡,將程序模塊化,但是他會增加服務器之間的網(wǎng)絡(luò)io,雖然會有那么一點的浪費,但是為了保證服務器硬件上的支持,我么還是選擇使用集權(quán)吧。。。
那么我們又是如何實現(xiàn)的快速響應的呢?
快速響應一般指的就是cpu的使用,因為同一時間一個cpu只能處理一個數(shù)據(jù),那么我們就只能從減少每一個數(shù)據(jù)的cpu占用時間來下手,那么cpu性能的浪費有主要體現(xiàn)在他的等待時間,比如我們的cpu要進行一個a+b的操作,但是a和b都是網(wǎng)絡(luò)傳輸過來的,這時我們就可以在cpu等待資源過來前的這段時間,rangcpu去處理別的請求,那么我們順藤摸瓜就能想出來,應該有一個隊列去存儲它要進行得操作,保證任何時間cpu都在處理數(shù)據(jù),這樣消息隊列的概念也就出來了。
存儲方面我們?yōu)榱思涌靑o可以使用cache緩存數(shù)據(jù)庫,這樣可加快讀寫速度,因為我們的時間浪費一般浪費在io上邊(網(wǎng)絡(luò)io或者本地磁盤io等),因此數(shù)據(jù)庫可以選擇緩存數(shù)據(jù)庫。
為了降低服務器的壓力,微信采用了將紅包在發(fā)送者客戶端進行計算分割的功能,即紅包被發(fā)過來時已經(jīng)被分好份,而且我們在進行網(wǎng)絡(luò)傳輸時要盡量傳字符串,因為字符串不需要進行序列化和反序列化(及其耗費資源的一項工作)。
那么使用緩存式數(shù)據(jù)庫,我們?nèi)绾伪WC服務器意外關(guān)機導致數(shù)據(jù)丟失呢?
這是我們就可以采用雙寫或者多寫,即同時寫入至少兩個緩存數(shù)據(jù)庫,進行數(shù)據(jù)備份,那么我們的內(nèi)存終究是有限的,因此我們也要定期將數(shù)據(jù)寫入關(guān)系數(shù)據(jù)庫,以便長久保存。
系統(tǒng)架構(gòu)圖如下:
?
- 發(fā)表于:?2018-12-14
- 原文鏈接:https://kuaibao.qq.com/s/20181214G0IWGY00?refer=cp_1026
- 騰訊「云+社區(qū)」是騰訊內(nèi)容開放平臺帳號(企鵝號)傳播渠道之一,根據(jù)《騰訊內(nèi)容開放平臺服務協(xié)議》轉(zhuǎn)載發(fā)布內(nèi)容。
來源:https://cloud.tencent.com/developer/news/371411
總結(jié)
以上是生活随笔為你收集整理的微信红包的支撑架构原理是什么?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于微信红包的架构思考
- 下一篇: 淘宝应对双11的技术架构分析