《淘寶數(shù)據(jù)庫(kù)架構(gòu)演進(jìn)過(guò)程PPT課件》由會(huì)員分享,可在線閱讀,更多相關(guān)《淘寶數(shù)據(jù)庫(kù)架構(gòu)演進(jìn)過(guò)程PPT課件(42頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級(jí),第三級(jí),第四級(jí),第五級(jí),單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級(jí),第三級(jí),第四級(jí),第五級(jí),淘寶數(shù)據(jù)庫(kù)架構(gòu)演進(jìn)過(guò)程,丹臣,/,趙林,數(shù)據(jù)架構(gòu)師,提綱,淘寶數(shù)據(jù)庫(kù)發(fā)展的三個(gè)階段,用戶,商品,交易現(xiàn)在的架構(gòu),2010雙11大促的挑戰(zhàn),MySQL源代碼研究的一些思路,淘寶自主數(shù)據(jù)庫(kù)Oceanbase原理介紹,淘寶的數(shù)據(jù)很美麗,淘寶數(shù)據(jù)庫(kù)發(fā)展三階段,SQL語(yǔ)句變化,多表關(guān)聯(lián),Join,單表復(fù)雜查詢,主鍵查詢,SQL,語(yǔ)句復(fù)雜程度由繁到簡(jiǎn)的過(guò)程,折射出淘寶數(shù)據(jù)架構(gòu)的一些變化。,淘寶電子商務(wù)網(wǎng)站的特點(diǎn),高并發(fā),PV13億,光棍節(jié)促
2、銷(xiāo)PV達(dá)到了17億,數(shù)據(jù)實(shí)時(shí)性要求高,數(shù)據(jù)準(zhǔn)確性要求高,大多數(shù)頁(yè)面屬于動(dòng)態(tài)網(wǎng)頁(yè),網(wǎng)站需要大量商品圖片展示,用戶通過(guò)搜索引擎,廣告,類(lèi)目導(dǎo)航尋找商品,網(wǎng)站讀多寫(xiě)少,比例超過(guò)10:1,賣(mài)家相關(guān)的數(shù)據(jù)量較大,比如商品數(shù),評(píng)價(jià)數(shù),業(yè)務(wù)量快速增長(zhǎng),不同的時(shí)期,不同的策略,正是因?yàn)槿缟系臉I(yè)務(wù)特點(diǎn):,早期的淘寶前端應(yīng)用系統(tǒng),嚴(yán)重依賴于數(shù)據(jù)庫(kù)系統(tǒng),早期單機(jī)式的,mysql,的使用方式,在業(yè)務(wù)的高速發(fā)展下,很快達(dá)到瓶頸,Mysql,遷移到,Oracle,,并升級(jí)到小型機(jī),高端存儲(chǔ)后,幾年的時(shí)間里,滿足了淘寶業(yè)務(wù)快速變化發(fā)展的需要。,我們的業(yè)務(wù)發(fā)展很快,但我們的技術(shù)沒(méi)有成長(zhǎng),數(shù)據(jù)庫(kù)里的數(shù)據(jù),第一,二階段的單臺(tái)數(shù)據(jù)
3、庫(kù)里,用戶,商品,交易等數(shù)據(jù)都在一起,存在許多的關(guān)聯(lián)查詢,應(yīng)用完全耦合,用戶,商品,交易,評(píng)價(jià),收藏,連接數(shù)問(wèn)題,Oracle,數(shù)據(jù)庫(kù),太多的應(yīng)用機(jī)器,有限的鏈接池,需要數(shù)據(jù)庫(kù)連接,小型機(jī)的內(nèi)存有限,發(fā)現(xiàn)了,Oracle,數(shù)據(jù)庫(kù)有連接數(shù)瓶頸,,5000,個(gè)以后相當(dāng)吃力。,中心化,服務(wù)化,用戶,商品,交易三大中心的建設(shè),HSF的誕生,中心化后面臨另一個(gè)問(wèn)題,服務(wù)調(diào)用者,與服務(wù)者之間如何進(jìn)行遠(yuǎn)程通信,淘寶,HSF,誕生,數(shù)據(jù)庫(kù)一些,OLTP join,問(wèn)題解決。,A,服務(wù),B,服務(wù),HSF,數(shù)據(jù)垂直化,應(yīng)用中心化之后,底層數(shù)據(jù)庫(kù)系統(tǒng)按照不同的業(yè)務(wù)數(shù)據(jù)進(jìn)行了一系列的垂直拆分,.,此類(lèi)拆分方式具有如下
4、的特點(diǎn):,a.,拆分方式簡(jiǎn)單,只需要把不同的業(yè)務(wù)數(shù)據(jù)進(jìn)行分離,b.,避免了不同的業(yè)務(wù)數(shù)據(jù)讀寫(xiě)操作時(shí)的相互影響,c.,該業(yè)務(wù)內(nèi)部及其所導(dǎo)致的問(wèn)題依舊,用戶,商品,交易,評(píng)價(jià),問(wèn)題,單庫(kù)IOPS 3w,單庫(kù)連接數(shù)已經(jīng)4k個(gè)了,應(yīng)用還在不斷加機(jī)器?,單庫(kù)每秒SQL執(zhí)行次數(shù)到4w次,搜索dump數(shù)據(jù)緩慢,DW ETL緩慢,用硬盤(pán)來(lái)拼,IOPS,?,一臺(tái)高端存儲(chǔ)的處理能力,480,塊盤(pán)的,hdisk,max IOPS 6w,注意應(yīng)用可以接受的,IO response time,以及,IOPS,點(diǎn)。比如,3w IOPS,以上,會(huì)達(dá)到,20ms,以上,數(shù)據(jù)庫(kù)架構(gòu)發(fā)展新思路,異構(gòu)數(shù)據(jù)庫(kù)讀寫(xiě)分離原始架構(gòu)圖(,0
5、8,年,8,月份),:,異構(gòu)的讀寫(xiě)分離,a.,寫(xiě)庫(kù)為集中式的,oracle,環(huán)境,提供數(shù)據(jù)安全性保障,b.,讀庫(kù)使用,mysql,采用數(shù)據(jù)分片,分庫(kù)分表,每臺(tái),mysql,放少量的數(shù)據(jù),單個(gè)數(shù)據(jù)分片內(nèi)部采用,mysql,復(fù)制機(jī)制,c.,讀庫(kù)的超大,memory,容量,起到了很好的,cache,作用,在內(nèi)存中的數(shù)據(jù)查詢性能遠(yuǎn)遠(yuǎn)高于在硬盤(pán)上的性能,d.oracle,到多臺(tái),mysql,按規(guī)則復(fù)制,由,TDDL,完成,e.,分區(qū)鍵的選擇至關(guān)重要,盡量讓數(shù)據(jù)訪問(wèn)落在單臺(tái)數(shù)據(jù)庫(kù)上,g.,利用好當(dāng)前的高端硬件,保護(hù)好自己的投資,構(gòu)建數(shù)據(jù)查詢的高速公路,應(yīng)用到DB的數(shù)據(jù)寫(xiě)入與查詢從雙向通行變成了單向通行,通
6、行效率更高,大大避免了相互影響。“借道行駛”的情況不再出現(xiàn)。,跨不過(guò)去的坎,為什么不直接遷到,MySQL,上面去呢?,a.,對(duì)于核心業(yè)務(wù),停機(jī)時(shí)間有限,寵大的數(shù)據(jù)無(wú)法短時(shí)間內(nèi)遷移,b.,無(wú)法在短時(shí)間內(nèi)完成項(xiàng)目發(fā)布過(guò)程中的測(cè)試,c.,沒(méi)有搞過(guò),mysql,分布式系統(tǒng),對(duì)完全使用,MySQL,還沒(méi)有信心,大數(shù)據(jù)量核心業(yè)務(wù)數(shù)據(jù)遷移思路,采用兩步走戰(zhàn)略,不僅走得穩(wěn),而且走得好:,先采用異構(gòu)的數(shù)據(jù)庫(kù)讀寫(xiě)分離,將數(shù)據(jù)復(fù)制到目標(biāo),mysql,各結(jié)點(diǎn),不斷切換應(yīng)用相關(guān)的讀服務(wù)到,mysql,結(jié)點(diǎn)上,驗(yàn)證可靠性,機(jī)器壓力,服務(wù)響應(yīng)時(shí)間,將寫(xiě)壓力從,oracle,結(jié)點(diǎn)遷移到,mysql,各結(jié)點(diǎn),,oracle,停
7、止寫(xiě),對(duì)于一些不太核心,業(yè)務(wù)不太復(fù)雜,相關(guān)影響點(diǎn)不多的數(shù)據(jù),可以直接進(jìn)行遷移。,水庫(kù)模型,你的系統(tǒng)可以撐多少?系統(tǒng)余量還有多少?,數(shù)據(jù)庫(kù)系統(tǒng)余量,兩輪測(cè)試過(guò)程,確保上線穩(wěn)定:,底層數(shù)據(jù)庫(kù)環(huán)境性能,穩(wěn)定性的基礎(chǔ)測(cè)試,常用的工具可以采用,sysbench,orion,supersmack,選擇不同的硬件,軟件組合,模擬應(yīng)用的壓力測(cè)試,要超越當(dāng)前業(yè)務(wù)壓力的幾倍進(jìn)行,這個(gè)壓力的幅度可以根據(jù)自己的業(yè)務(wù)增長(zhǎng)設(shè)計(jì)一個(gè)合理的值。,我們?nèi)绾巫龅接脭?shù)據(jù)來(lái)說(shuō)話?靠測(cè)試拿數(shù)據(jù),不靠經(jīng)驗(yàn),數(shù)據(jù)庫(kù)系統(tǒng)余量,數(shù)據(jù)生命周期之歷史遷移,Data,Online Data,History Data,商品,交易,評(píng)價(jià),物流等數(shù)據(jù)都有
8、自己的生命周期。通過(guò)數(shù)據(jù)歷史遷移,減少在線庫(kù)的容量,提高在線庫(kù)的性能。,在線與歷史應(yīng)用分離,Online Data,Database,History Data,Database,Online Application,History Application,數(shù)據(jù)遷移程序,在線庫(kù)與歷史庫(kù)重要等到級(jí)不同,在線庫(kù)更高,同一應(yīng)用的在線應(yīng)用與歷史應(yīng)用分離,高級(jí)別的應(yīng)用不能直接依賴于低級(jí)別的數(shù)據(jù)庫(kù),商品訪問(wèn)框架,主鍵查詢,賣(mài)家查詢,淘寶商品的幾個(gè)主要的查詢:,a.,主鍵查詢通過(guò)分布式數(shù)據(jù)庫(kù),以及分布式緩存系統(tǒng)解決,b.,賣(mài)家商品管理類(lèi)查詢,這一類(lèi)的查詢數(shù)據(jù)量大,并且還有,like,查詢的需求,通過(guò)實(shí)時(shí)搜索解
9、決,商品,分布式緩存,分布式數(shù)據(jù)庫(kù),實(shí)時(shí)搜索,注:考慮不同的讀載體的技術(shù)實(shí)現(xiàn),性能,成本,用戶,用戶登陸事件數(shù)據(jù)(日志量90%)與用戶主數(shù)據(jù)(日志量10%)分離,不僅要分表,而且要放到不同的數(shù)據(jù)庫(kù)集群中,并且作好不同數(shù)據(jù)等級(jí)的容災(zāi)處理。,用戶信息,用戶主信息,用戶信息擴(kuò)展,用戶主信息數(shù)據(jù)庫(kù)集群,用戶信息擴(kuò)展數(shù)據(jù)庫(kù)集群,過(guò)度中心化,用戶中心,Tair,分布式緩存,商品中心,交易中心,評(píng)價(jià)中心,用戶中心調(diào)用次數(shù),高峰時(shí)期達(dá)到了每天,60,億次,用戶中心的過(guò)度中心化問(wèn)題越來(lái)越顯著,成為各種操作的關(guān)鍵路徑。,Mysql,集群,用戶中心中的讀寫(xiě)分離,用戶中心,Tair,分布式緩存,商品中心,交易中心,評(píng)
10、價(jià)中心,Mysql,集群,在其它中心中內(nèi)置可以訪問(wèn),tair,的客戶端,大部份的讀不需要經(jīng)過(guò)用戶中心,直接讀,tair,,寫(xiě)需要經(jīng)過(guò)用戶中心。,交易的讀寫(xiě)分離框架,主庫(kù)按照買(mǎi)家拆分,讀庫(kù)按照賣(mài)家拆分。,一些難題,數(shù)據(jù)庫(kù)集群自動(dòng)擴(kuò)展仍然是個(gè)難題,但是是可以忍受的,底層數(shù)據(jù)庫(kù)集群經(jīng)過(guò)評(píng)估,擴(kuò)展的頻率并不高。,MySQL DDL操作不便,鎖表,對(duì)寫(xiě)操作影響較大,為了減少影響,分了比較多的表,進(jìn)一步加重了維護(hù)的負(fù)擔(dān)。,其它。,光棍節(jié)大促,活動(dòng)前,經(jīng)過(guò)了充分的準(zhǔn)備與系統(tǒng)評(píng)估工作:,CDN,面臨的壓力最大,預(yù)估流量將會(huì)達(dá)到,280G,左右,準(zhǔn)備了各個(gè)層面的系統(tǒng)降級(jí)方案。,一個(gè)小意外,Dataguard+m
11、irror redo對(duì)寫(xiě)的影響比較大,臨時(shí)刪除遠(yuǎn)程的redo member解決這個(gè)問(wèn)題,MySQL源代碼研究,我們主要從兩方面著手:,MySQL,內(nèi)部,源代碼熟悉,性能優(yōu)化,新增功能,MySQL,外部,比如利用,binlog,做數(shù)據(jù)復(fù)制,MySQL源代碼研究,內(nèi)部新增的一些功能:,a.,給,innodb,動(dòng)態(tài)加數(shù)據(jù)文件,b.,禁止新連接,c.,表的訪問(wèn)統(tǒng)計(jì),d.Innodb ssd,加速,e.Mysql replication,并行復(fù)制,MySQL Binlog解析數(shù)據(jù)復(fù)制中心,解決商品,用戶,評(píng)價(jià),收藏夾等應(yīng)用向數(shù)據(jù)倉(cāng)庫(kù),搜索增量同步數(shù)據(jù)的需求,MySQL Binlog解析數(shù)據(jù)復(fù)制中心,C
12、client,端特性:,a.,支持,mysql master,slave,主備切換,獲取,binlog,不受影響,b.,自動(dòng)重連主機(jī),c.,支持,checkpoint,支持?jǐn)帱c(diǎn)續(xù)傳,binlog,Java,端復(fù)制代碼特性:,a.,支持,statement,row,兩種復(fù)制模式,b.,支持按規(guī)則復(fù)制,c.,支持一定條件下的并行復(fù)制,c.,支持,checkpoint,異地多數(shù)據(jù)中心的數(shù)據(jù)同步,杭州,青島,other,異地多數(shù)據(jù)中心的數(shù)據(jù)同步,除了oracle dataguard,master-slave replication數(shù)據(jù)復(fù)制,我們還有其它哪些可選方案?,淘寶自主數(shù)據(jù)庫(kù)Oceanbase,動(dòng)態(tài)數(shù)據(jù)與靜態(tài)數(shù)據(jù)進(jìn)行分離,動(dòng)態(tài)數(shù)據(jù)采用集中式,靜態(tài)數(shù)據(jù)存放與服務(wù)采用分布式,設(shè)計(jì)了一個(gè)寬表,冗余數(shù)據(jù),將離散型IO合并成連續(xù)型IO,每晚動(dòng)態(tài)數(shù)據(jù),與靜態(tài)數(shù)據(jù)合并一次,將首先在收藏夾應(yīng)用上試點(diǎn),總結(jié),架構(gòu)就是用一些簡(jiǎn)單的道理,去解決問(wèn)題,對(duì)多種技術(shù),業(yè)務(wù)特征,細(xì)節(jié)都要有所了解,考慮周全,識(shí)別系統(tǒng)的主要問(wèn)題,花,80%,的精力去解決,80%,的問(wèn)題,架構(gòu)都是有時(shí)效性的,需要不斷探索或者接受新的思路,Follow me,Taobao dba,團(tuán)隊(duì),blog,我的,blog subject:Data&Architecture,我的新浪微博,:,丹臣,我的,msn:,Questions?,