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