如何構(gòu)建一個大型后端系統(tǒng)

最近寫的《假如給我百倍流量》講稿

image

從三到萬。


image

這是一次務虛的分享,主要想介紹大型后端系統(tǒng)的架構(gòu)演進方案澎粟,以及后續(xù)的思考活烙。


image

世間普適的法則。


image

這個思想很重要气笙,從CPU芯片到硬件到內(nèi)核到協(xié)議到應用潜圃,幾乎涵蓋了所有計算機領(lǐng)域。本圖是緩存領(lǐng)域的多個層級隧出。


image

Linux 內(nèi)核的層級。


image

OSI 協(xié)議的層級赏廓。


image

我們的項目經(jīng)過天使輪,開工了既忆。


image

用 Python 開擼,大學生的水平苛吱。


image

項目干得不錯,融了 A 輪援所。用戶量增加后服務器 QPS 壓力增大住拭。除了平攤 IO 壓力瘟檩,另外一個考慮是為了平滑上線卓研。不能每次上線期間服務都不可用是吧寥闪。


image

一般使用 Nginx疲憋。


image

負載均衡的基本概念。


image

繼續(xù)融資 B1 輪,用戶量繼續(xù)增長灰追。緩存也是很基礎的優(yōu)化方案弹澎。


image

一般使用 Redis。


image

緩存的一般意義。


image

繼續(xù)融資 B2 輪音五,業(yè)務增加了 LBS 的功能躺涝,需要用到 PostgreSQL + PostGIS 的能力夯膀。但是基于地理信息的數(shù)據(jù)不適合使用緩存,為了平攤壓力俺猿,引入讀寫分離押袍。


image

左半邊服務器的 pg 連接沒有畫。


image

讀寫分離的基本概念圈盔。


image

項目長足發(fā)展,融了 C1 輪的錢癌佩,用戶量也繼續(xù)上漲。產(chǎn)品設計了很多提交性的功能姚建,為了減輕數(shù)據(jù)庫的寫壓力掸冤,引入了消息隊列,削峰填谷饺藤。


image

右邊服務器的 MQ 連接沒畫罗丰。


image

一般使用 Kafka,談談 Kafak 高吞吐的實現(xiàn)方式谜嫉。


image

繼續(xù)融資 C2 輪哆档,用戶量繼續(xù)上漲澳淑,數(shù)據(jù)庫單機不論是存儲量還是吞吐量都已經(jīng)是瓶頸「苎玻現(xiàn)在開始發(fā)大招:數(shù)據(jù)庫分庫分表。


image

分庫分表后的架構(gòu)嫩海。


image

分庫分表后的的概念,記住不要輕易使用奕谭,特別是在項目前期不要過度設計血柳。


image

繼續(xù)融資 C3 輪,用戶量繼續(xù)上漲±バ冢現(xiàn)有架構(gòu)已經(jīng) hold 不住了满粗。


image

首先是數(shù)據(jù)庫連接數(shù)吃緊。


image

無法做資源隔離捅彻,作為一個開發(fā),可能自己的功能沒有問題缭裆,但是數(shù)據(jù)庫被別人拖掛澈驼,服務本身也可能被別人拖掛。


image

業(yè)務越多氏淑,整體架構(gòu)越復雜假残,微服務帶來的收益越大。
過早引入反而是增加開發(fā)和運維的工作眶俩。


image

數(shù)據(jù)庫連接數(shù)減少纲岭。


image

整個身心都清爽了止潮。


image

如果一個人負責太多微服務,還不如他寫到一個服務里面燃乍。


image

勝利在前方,但是感覺架構(gòu)又拖了后腿舆瘪。


image

Google 爸爸已經(jīng)幫你準備好了堤舒。


image

不管什么語言什么框架寫的應用(Go, Python, Node.js)箕戳,Kubernetes 都可以在任何環(huán)境中安全的啟動它,物理服務器壮虫、虛擬機囚似、云環(huán)境饶唤。


image

Kubernetes 如果發(fā)現(xiàn)有節(jié)點工作不飽和办素,便會重新分配 pod,幫助我們節(jié)省開銷季二,高效的利用內(nèi)存胯舷、處理器等資源。

如果一個節(jié)點宕機了逃顶,Kubernetes 會自動重新創(chuàng)建之前運行在此節(jié)點上的 pod以政,在其他節(jié)點上運行盈蛮。


image

網(wǎng)絡、負載均衡袒炉、復制等特性,對于 Kubernetes 都是開箱即用的十性。

pod 是無狀態(tài)運行的劲适,任何時候有 pod 宕了霞势,立馬會有其他 pod 接替它的工作草雕,用戶完全感覺不到墩虹。

如果用戶量突然暴增,現(xiàn)有的 pod 規(guī)模不足了菌湃,那么會自動創(chuàng)建出一批新的 pod惧所,以適應當前的需求下愈。

反之亦然,當負載降下來的時候叫编,Kubernetes 也會自動縮減 pod 的數(shù)量。


image

利用鏡像杯拐,從開發(fā)到調(diào)試到上線一條龍,酸爽顶滩。


image

Kubernetes 如此流行的一個重要原因是:應用會一直順利運行盐欺,不會被 pod 或 節(jié)點的故障所中斷冗美。

如果出現(xiàn)故障,Kubernetes 會創(chuàng)建必要數(shù)量的應用鏡像属韧,并分配到健康的 pod 或節(jié)點中挫剑,直到系統(tǒng)恢復。


image

完善后的架構(gòu)哲戚。


image

如果繼續(xù)發(fā)展呢?


image

上面一排是指導思想,下面一排是具體方案秒裕。


image

計算機領(lǐng)域很重要的思想几蜻。


image

也是很重要的思想。


image

如果僅用一句話來形容高并發(fā)、高可用蹬敲?副本足以。


image

IO 復用是節(jié)約進程這個資源,讓單個進程可以監(jiān)聽多個 fd食店。


image

也就是說不要無端提高系統(tǒng)復雜度。


image

展開分析自娩。


image

單元化的實現(xiàn)。針對流水型數(shù)據(jù)姊扔,在本單元就消化完成了恰梢。
把分流的動作提前到網(wǎng)關(guān)處。


image

針對共享型數(shù)據(jù)摧茴,則涉及到跨地區(qū)的訪問尘分。比如三地五中心這種經(jīng)典架構(gòu)培愁。


image

異地災備的基礎是谍咆,其他地區(qū)的數(shù)據(jù)也要進行冗余存儲摹察。


image

服務治理的進化方向黄娘,此處無法展開逼争。


image

除了 MySQL 和 PostgreqSQL 我們還有啥。


image

跨領(lǐng)域的結(jié)合。


image

期待量子計算機稿壁。


image

原文載于假如給我百倍流量

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蕾羊,一起剝皮案震驚了整個濱河市龟再,隨后出現(xiàn)的幾起案子浆劲,更是在濱河造成了極大的恐慌牌借,老刑警劉巖膨报,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異比然,居然都是意外死亡谈秫,警方通過查閱死者的電腦和手機拟烫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來置媳,“玉大人拇囊,你說我怎么就攤上這事〈疲” “怎么了膘掰?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長窒舟。 經(jīng)常有香客問我辜纲,道長耕腾,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任狼纬,我火速辦了婚禮疗琉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘柠贤。我一直安慰自己臼勉,他們只是感情好宴霸,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著恩闻,像睡著了一般幢尚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上理茎,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天朗鸠,我揣著相機與錄音烛占,去河邊找鬼。 笑死芽卿,一個胖子當著我的面吹牛蹬竖,可吹牛的內(nèi)容都是我干的币厕。 我是一名探鬼主播旦装,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼呻袭!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起篓足,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎没陡,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體潜腻,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡蝌箍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年杂拨,在試婚紗的時候發(fā)現(xiàn)自己被綠了弹沽。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡丽已,死狀恐怖沛婴,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情丑婿,我是刑警寧澤枯冈,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站炫加,受9級特大地震影響俗孝,放射性物質(zhì)發(fā)生泄漏赋铝。R本人自食惡果不足惜农尖,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望滑沧。 院中可真熱鬧滓技,春花似錦令漂、人聲如沸洗显。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽俄讹。三九已至患膛,卻和暖如春胞此,著一層夾襖步出監(jiān)牢的瞬間漱牵,已是汗流浹背酣胀。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留儒溉,地道東北人。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像精堕,于是被迫代替她去往敵國和親瘫证。 傳聞我的和親對象是個殘疾皇子背捌,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容