- 從程序員到架構(gòu)師:大數(shù)據(jù)量、緩存、高并發(fā)、微服務(wù)、多團(tuán)隊(duì)協(xié)同等核心場(chǎng)景實(shí)戰(zhàn)
- 王偉杰編著
- 618字
- 2022-06-17 17:04:20
3.1 業(yè)務(wù)場(chǎng)景:億級(jí)訂單數(shù)據(jù)如何實(shí)現(xiàn)快速讀寫
這次項(xiàng)目的對(duì)象是電商系統(tǒng)。該系統(tǒng)中大數(shù)據(jù)量的實(shí)體有兩個(gè):用戶和訂單。每個(gè)實(shí)體涵蓋的數(shù)據(jù)量見表3-1。
表3-1 數(shù)據(jù)量

某天,領(lǐng)導(dǎo)召集IT部門人員開會(huì),說:“根據(jù)市場(chǎng)推廣的趨勢(shì),我們的訂單很快就會(huì)上億,每天會(huì)有100萬的新訂單。不要問我這個(gè)數(shù)據(jù)怎么出來的,總之,領(lǐng)導(dǎo)交代,讓IT部門提前做好技術(shù)準(zhǔn)備,以防到時(shí)候系統(tǒng)撐不住”。
那時(shí)候同事們內(nèi)心是這樣想的:“又聽市場(chǎng)吹牛吧”。領(lǐng)導(dǎo)看了同事們的表情,也知道大家在想什么,他說:“我知道你們不相信,我也不相信。但是現(xiàn)在領(lǐng)導(dǎo)給大家任務(wù)了,要求系統(tǒng)可以支持上億訂單和每日百萬新訂單,服務(wù)器可以采購(gòu)。”
做這個(gè)規(guī)劃之前,存儲(chǔ)訂單的數(shù)據(jù)庫(kù)表是一個(gè)單庫(kù)單表。可以預(yù)見,在不久的將來數(shù)據(jù)庫(kù)的I/O和CPU就可能支撐不住,因?yàn)橛唵蜗到y(tǒng)原來就不是很快。
然后項(xiàng)目組做了簡(jiǎn)單的功能,插入一些測(cè)試數(shù)據(jù),訂單量到2000萬的時(shí)候,響應(yīng)時(shí)長(zhǎng)就不可接受了。
為了使系統(tǒng)能承受這種日百萬級(jí)新訂單的壓力,項(xiàng)目組探討過很多解決方案,最終決定使用分表分庫(kù):先將訂單表拆分,再進(jìn)行分布存儲(chǔ)。
原來的訂單表就是一個(gè)sale數(shù)據(jù)庫(kù)里面的一張order表,之后就會(huì)創(chuàng)建多個(gè)order數(shù)據(jù)庫(kù)order1,order2,order3,order4,……,每個(gè)數(shù)據(jù)庫(kù)里面又有多張訂單表t_order_1,t_order_2,t_order_3,……。
當(dāng)然,訂單子表也是多張:t_order_item_1,t_order_item_2,t_order_item_3,……。
訂單數(shù)據(jù)根據(jù)一定的規(guī)律分布存儲(chǔ)在不同order庫(kù)里的不同order表中。
其實(shí)項(xiàng)目組并不是一開始就打算用分表分庫(kù),當(dāng)初也評(píng)估了一下拆分存儲(chǔ)的其他技術(shù)方案。接下來介紹當(dāng)時(shí)是怎么選型的。
- PHP 7底層設(shè)計(jì)與源碼實(shí)現(xiàn)
- Learning Salesforce Einstein
- 表哥的Access入門:以Excel視角快速學(xué)習(xí)數(shù)據(jù)庫(kù)開發(fā)(第2版)
- Corona SDK Mobile Game Development:Beginner's Guide(Second Edition)
- 從Java到Web程序設(shè)計(jì)教程
- Learning Ionic
- Python預(yù)測(cè)之美:數(shù)據(jù)分析與算法實(shí)戰(zhàn)(雙色)
- Java高手是怎樣煉成的:原理、方法與實(shí)踐
- Mastering ASP.NET Core 2.0
- Sitecore Cookbook for Developers
- Java 11 and 12:New Features
- Managing Windows Servers with Chef
- 樹莓派開發(fā)從零開始學(xué):超好玩的智能小硬件制作書
- VC++ 2008專題應(yīng)用程序開發(fā)實(shí)例精講
- 區(qū)塊鏈原理、架構(gòu)與應(yīng)用(第2版)