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