大話|大話程序猿眼裡最全的高並發,快收藏!

2020-12-14 騰訊網

Hi !我是小小,今天是本周的第六篇,本月的最後一篇,你還好嗎?我是小小,我們本周的內容是大話高並發架構

前言

高並發經常會發生在有大量用戶量,用戶高聚集的業務場景,例如秒殺活動,定時領取紅包。為了讓業務可以在高並發的時候能夠相當好的運行,並給用戶一個良好的交互體驗,所以,考慮各種高並發的場景,設計高並發架構。

伺服器架構

業務從初期到成熟,從單一到集群,最後到分布式,需要有伺服器的負載均衡,數據的主從複製,nosql的各種集群,靜態文件上傳cdn等等。需要用到的伺服器架構如下

伺服器

負載均衡,如阿里雲的slb 或者是nginx資源監控分布式

資料庫

主從分離,集群DBA表優化,索引優化分布式

nosql

redis:主從分離,集群mongodb:主從分離,集群memcache:主從分離,集群

cdn

htmlcssjsimage

並發測試

對於高並發業務,需要進行高並發的業務測試,通過大量的數據分析評估整個架構支撐的並發量。測試並發使用的工具如下阿里雲性能測試jmettervisual studio 性能負載測試Microsoft Web Application Stress Tool

實現方案

通用方案

日用戶流量大,但是比較分散,偶爾會有用戶聚合的情況

場景

用戶籤到,用戶中心,用戶訂單

伺服器架構

說明

這些場景,基本都是用戶進入app後會操作,這些用戶不會高聚集,同時這些表又是大的數據表,業務很多,所以需要減少DB的查詢,優先查詢緩存,如果緩存不存在,再命中DB。所以需要使用緩存,為了降低緩存,所以使用分布式的緩存,對DB實現hash分組,把用戶分布到不同的緩存中,不會影響查詢效率。

方案

用戶籤到

計算用戶分布的key,redis hash中查找用戶今日籤到的消息

能查詢到,返回查詢的信息

如果沒有查詢到,DB查詢今日是否搶到過,如果搶到過,信息同步redis

如果db也沒有查詢到,進行籤到邏輯,db添加今日籤到記錄。這是一個事物

緩存籤到信息到redis,返回籤到信息

用戶訂單

這裡只緩存第一頁訂單信息

用戶訪問訂單列表,如果是第一頁讀緩存,如果不是讀DB

計算出用戶分布的key,redis hash中查找用戶訂單信息

如果能查詢到用戶訂單信息,返回訂單信息

如果不存在用戶信息,就直接db查詢第一頁 訂單數據,然後緩存redis,返回訂單信息

用戶中心

計算用戶key,redis hash 中查找出用戶訂單信息

能查找到,返回用戶信息

如果未找到,緩存redis,返回用戶信息

以上的僅僅是一個相對於比較簡單的並發架構

消息隊列

用於緩存秒殺,活動,用戶在一瞬間湧入產生的高並發的請求

場景:

定時領取紅包。

架構

說明

場景中的定時領取是一個高並發的業務,秒殺活動會在一瞬間湧入。這種業務會直接命中DB,會導致數據的崩潰。設計這種業務的時候,需要使用消息隊列,可以把參與的用戶信息添加到消息隊列中,然後緩慢的消耗。

方案

定時領取紅包:使用redis的list當用戶參與活動,用戶信息push到隊列中書寫多個線程去pop數據,進行發放紅包的業務。

一級緩存

一級緩存就是使用站點伺服器去緩存數據,只緩存部分請求量大的數據,並且數據量還需要控制,一級緩存需要設置秒為單位的過期時間,具體業務場景看業務場景而定,目的是有高並發的時候可以讓數據獲取命中到一級緩存,減少nosql的壓力。

架構圖

場景

APP首屏的數據接口

靜態化數據

對於更新不頻繁,並且數據允許短時間內的延遲,可以通過數據靜態化成json,xml,html等數據文件上傳cdn,然後拉取數據的時候優先拉取cdn,然後再緩存,最後資料庫,用於減輕db的壓力。

分層,分割,分布式

大型網站需要很好的支撐高並發,這需要很長的規劃設計,主要需要如下

分層:系統在橫向維度切分成幾個部分,每個部門負責一部分相對簡單並且單一的職責,然後通過上層,對下層的完整依賴形成一個完整的系統。例如把一個電商分為,應用層,服務層,數據層。應用層:網站首頁,用戶中心服務層:訂單服務,用戶管理服務數據層:關係型資料庫,nosql資料庫。

分割在縱向對業務進行切分例如,用戶中心可以分割成為帳戶信息模塊,訂單模塊,充值模塊,提現模塊,優惠券模塊

分布式分布式應用和服務,把應用進行分布式部署。當業務達到一定用戶量的時候,需要對伺服器進行負載均衡,資料庫,緩存主從集群分布式靜態資源,靜態資源上傳cdn分布式計算,使用hadoop進行大數據分布式計算

集群

對於用戶訪問集中的伺服器,搭建集群,通過負載均衡共同對外提供服務,當有更多的用戶訪問的時候,只需要加機器即可。

ngixn反向代理slb資料庫的主從分離

異步

在高並發業務場景中,如果涉及到資料庫操作,主要壓力是在資料庫伺服器上,當連接數量達到最大值的時候,有其他連接資料庫的請求操作的時候,就需要有空閒的連接。

場景

自動彈窗籤到雙十一搶紅包雙十一訂單入庫

設計

使用消息隊列,把入庫的內容放入到消息隊列中,業務接口直接返回提示,高峰期延遲到帳。然後再寫獨立程序從消息隊列中,讀取進行入庫操作,入庫成功以後刷新緩存,如果入庫失敗,記錄日誌,方便查詢反饋和重新持久化。

補充

其他場景,例如簡訊發送

面向服務

soa 面向服務架構設計微服務更加細膩度的服務化。

例子

用戶行為跟蹤記錄統計

說明

通過上報應用模塊,操作事件,事件對象,等數據,記錄用戶操作行為。例如用戶在某個商品模塊點擊了某一件商品,或者看了某一件商品。

架構

node.js web 應用負載均衡redis主從集群mysql主從複製nodejs + express + ejs + redis + mysql

冗餘自動化

當高並發業務出現單擊的時候,需要快速的有備用的替代,所以需要自動化執行這些操作

冗餘

資料庫備份備份伺服器

自動化

自動化監控自動化報警自動化降級

關於作者

我是小小,一枚生於二線,活在一線城市的程序猿,我是小小,我們下期再見。

小明菜市場

相關焦點

  • 大話程序猿眼裡的高並發
    ,有很多用戶同時的訪問URL地址,比如:淘寶的雙11,雙12,就會產生高並發,如貼吧的爆吧,就是惡意的高並發請求,也就是DDOS攻擊,再屌絲點的說法就像玩擼啊擼被ADC暴擊了一樣,那傷害你懂得(如果你看懂了,這個說法說明是正在奔向人生巔峰的屌絲。
  • 大話程序猿眼裡的高並發 - OSCHINA - 中文開源技術交流社區
    簡單理解下高並發:高並發是指在同一個時間點,有很多用戶同時的訪問URL地址,比如:淘寶的雙11,雙12,就會產生高並發,如貼吧的爆吧,就是惡意的高並發請求,也就是DDOS攻擊,再屌絲點的說法就像玩擼啊擼被
  • 大話西遊2:盤它?盤你個大頭鬼!細數大話裡含義不同的網絡用語
    但是在大話西遊2裡,如果有人說你得SB了,你肯定會高興的合不攏嘴!   我們經常在遊戲裡聽到別人說,來SB抽,來SB破,其實是神兵的簡稱。 神兵在仙器還沒出來的時候,是身份的象徵,那句有關神兵的口號是這樣喊的「一旦擁有,別無所求」!
  • 大話西遊2:重溫舊夢那些年我們一起玩過的大話
    今天小黑和一個遊戲認識十年的哥們在院子吃著花生米喝著小酒,聊美女聊遊戲,聊著聊著感覺眼淚快飆出來了。多年前小黑還是一個小鮮肉,如今已是一枚經常被長輩逼著去相親的大齡剩男,偶爾也會YY在遊戲能娶個女玩家自我安慰下,採訪過的女玩家不少,要麼名花有主,要麼嫩的讓我這頭老牛不好意思下口。
  • 大話西遊2:老玩家都經歷過,大話西遊大事盤點
    大話西遊已經走向18個年頭,今天,我們來盤點一下這18年來那些大大小小的事情。2002年的6月17日,大話西遊2開始公測,在公測前其實已經有一個失敗的大話西遊1來墊底,經過優化改革後,大話2才和大家見面,當時最早的倆伺服器一個是寶象國,一個是天竺國,其中有兩個非常經典的玩法,就是在那個時候開始的,分別是天庭任務還有200環跑環任務,遺憾的是現在的200環已經取消了,做天任務也已經修改了非常大的改動。
  • 全平臺熱血公測 《大話西遊熱血版》公測福利再升級
    《大話西遊熱血版》明天將開啟全平臺熱血公測,十二大福利公測壕禮再升級!產品App Store首發至今,受到了玩家的喜愛,取得了不俗的市場成績。在全平臺公測來臨之際,產品重磅回饋玩家,公測福利再升級。
  • 心耀大話璀璨落幕 大話西遊手遊粉絲節啟動
    12月11日,心耀大話·玩家年度盛典在北京順利落幕,在這個屬於大話玩家的盛典之上,大話西遊家族不僅宣布了大話送福季、《大話西遊熱血版》、「大話+」計劃等接下來的一系列大動作,由《大話西遊》手遊嘉年華以及粉絲節特別回饋計劃內容
  • 看見過最牛的大話嗎?
    在書的封底,有一段至今在中國能夠看到的最牛的大話:易經為我國上古奇書,是中華傳統文化中最為璀璨的一顆明珠。可謂前無古人,後無來者。易經是一部無與比擬的,最為神聖的古老經典。從古至今,就被推崇備至,尊為群經之首。而且在世界上產生著重大影響。易經為政治,經濟,哲學,軍事,數術,人生道理的指導全書,具有一定的現實意義。
  • 大話西遊手遊哪個區人多 哪個區最火
    遊戲已經公測近兩年的時間了,新區和老區的開服時間差距也越來越大,遊戲老手應該都明白新區、老區各有自己的優勢,不過新區的玩家流失的確會比較快,論火絕對是比不上老區的,下面小編就... 大話西遊手遊哪個區人多呢?
  • 大話西遊2速度最快的靈寶來了,超敏魔在它面前不值一提
    自從資料片「靈寶降魔」投放以來,這件裝備就成了玩家們最得力的助手之一。俗話說:天下武功唯快不破,因此一些速度超快的靈寶也成了土豪玩家們的必備神器。有小夥伴問過類似的問題,如今大話西遊2靈寶的速度最快能達到多少?
  • 除神獸還送大話皮影小劇場!《大話西遊2》新服【天縱英才】邀你...
    玩新服禮包不能少,新服有牛刀小試、縱橫江湖和叱吒三界三個不同級別的預約禮包,為你奉上高級的排隊特權,助你上線快人一步!此外,更有時裝/特效抵扣券、海量大話幣和師門貢獻、靈兔絨等豐厚獎勵,助你縱橫新服,闖蕩江湖備戰無憂!勤奮升級更有神獸天降伴你同遊三界!
  • 《大話西遊》25周年了,我很懷念它
    他想做的事,一定會去做,哪怕在旁人眼裡是瘋癲、是魔怔。這還得從周星馳和劉鎮偉的緣分說起。9歲那年,周星馳第一次在電影院看完李小龍的電影《唐山大兄》,回家就把右手戳進綠豆堆,說要練練鐵砂掌。所以說,《大話西遊》票房慘澹,說的根本不是香港,周星馳這個名字還是足夠紅火。可觀眾越是給面子,打臉就來得越快。大批觀眾衝著「周星馳」和「捧腹大笑」而來,卻發現笑不出來了。
  • 大話西遊2:講述自己的大話經歷,一不小心暴露了年齡
    現在還玩大話的都是二十多歲或者三十多歲#24,小年輕玩的很少,估計都去打CF,LOL,吃雞去了,不對,應該是王者榮耀,其實回顧自己十多年的大話之旅其實一直都很悲劇的,雖然生活虐我千百遍,但是我們還要像對待初戀一樣的去對待他。
  • 大話西遊2019玩家嘉年華圓滿落幕,龍族全平臺公測即將開啟
    而珍藏著大話兄弟們寶貴記憶的大話情義博物館,每一件藏品和它背後的故事,都能把在場的玩家們一秒拉回大話的裡程碑事件裡。要問一年一度的嘉年華現場什麼最令人期待?無差別PK賽年度總決賽必須得有姓名。作為一場實力玩家的終局之戰,最終贏得冠軍的老男孩戰隊C位出道,成為全場焦點。
  • 從遊戲中走到現實 大話夫妻的「自娛自樂」
    2011-06-14 17:54:02 來源: 《大話西遊2》官網 舉報
  • 讀《大話數據結構》有感
    讀《大話數據結構》有感大話數據結構是作者程傑潛心三年的扛鼎之作,可謂「厚積厚發」。都說想要學習某樣東西,前提是得先去了解它,而教材整本書雖然都在講數據結構,但始終沒有給出一個準確的定義,而大話數據結構中,剛開始就指明:「數據結構是相互之間存在一種或多種特定關係的數據元素的集合」,首先不說它是否足夠準確,但起碼使讀者對數據結構有了最初步的認知與了解,總要比還未了解就去學習要好吧。
  • 「說大話」用英語怎麼說?
    1.Fast-talk 花言巧語表示這個人說話很自信,說得又多又快,特別有說服力,不過說的話卻不怎麼值得人相信。例:He fast-talked the old woman out of a large piece of her property.他花言巧語地哄騙那個老太太拿出一大筆財產。2.
  • 飛龍探雲手《大話仙劍》絕技衣缽傳承
    仙劍》7月16日上線了,李逍遙絕技「飛龍探雲手」衣缽傳承,人人習得此招,斷了妖怪財路,滅了魔頭志氣! 飛龍探雲手:創者不詳,李逍遙之父傳於李逍遙,後廣泛流傳於民間。武器裝備!在《大話仙劍》的世界中人人均可以學習此項技能,共分5層,層數越高成功機率越大。高級後可以探索高等級怪物身上的財務,獲得物品等級越高!
  • 同城交友盡享狂歡 大話FOUNT上海餐廳聚會落幕
    眾多高顏值上海玩家、粉絲紛紛現身體驗,更有大話人氣角色逍遙生和狐美人高顏值coser到場助陣,攜知名主播畫手為玩家送上大話手繪T恤好禮!本次線下狂歡活動還通過微博進行了全程直播,活動現場精彩視頻也在近日爆出!
  • 大話西遊2又叒叕合服了 十七年的大話玩家到底還剩下多少
    在經歷了17年的時光,大話西遊2就像一個老人一般了,無數玩家註冊沉迷又離開這個虛擬的世界,到現在大話西遊2還剩下多少玩家呢,沒有人知道。今天官方突然公布了2019年第二次合服的名單,讓阿宅不禁想到了這個問題,來一起看看吧。