国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

阿里數(shù)據(jù)庫(kù)十年變遷,那些你不知道的二三事

greatwhole / 3083人閱讀

摘要:今天,阿里數(shù)據(jù)庫(kù)事業(yè)部研究員張瑞,將為你講述雙數(shù)據(jù)庫(kù)技術(shù)不為人知的故事。這十年,阿里巴巴數(shù)據(jù)庫(kù)團(tuán)隊(duì)一直有一個(gè)使命推動(dòng)中國(guó)數(shù)據(jù)庫(kù)技術(shù)變革。

第十個(gè)雙11即將來(lái)臨之際,阿里技術(shù)推出《十年牧碼記》系列,邀請(qǐng)參與歷年雙11備戰(zhàn)的核心技術(shù)大牛,一起回顧阿里技術(shù)的變遷。

今天,阿里數(shù)據(jù)庫(kù)事業(yè)部研究員張瑞,將為你講述雙11數(shù)據(jù)庫(kù)技術(shù)不為人知的故事。在零點(diǎn)交易數(shù)字一次次提升的背后,既是數(shù)據(jù)庫(kù)技術(shù)的一次次突破,也見(jiàn)證了阿里技術(shù)人永不言敗的精神,每一次化“不可能”為“可能”的過(guò)程都是阿里技術(shù)人對(duì)技術(shù)的不懈追求。

再過(guò)幾天,我們即將迎來(lái)第十個(gè)雙11。過(guò)去十年,阿里巴巴技術(shù)體系的角色發(fā)生了轉(zhuǎn)變,從雙11推動(dòng)技術(shù)的發(fā)展,變成了技術(shù)創(chuàng)造新商業(yè)。很多技術(shù)通過(guò)云計(jì)算開(kāi)始對(duì)外輸出,變成了普惠的技術(shù),服務(wù)于各個(gè)行業(yè),真正做到了推動(dòng)社會(huì)生產(chǎn)力的發(fā)展。

這十年,阿里巴巴數(shù)據(jù)庫(kù)團(tuán)隊(duì)一直有一個(gè)使命:推動(dòng)中國(guó)數(shù)據(jù)庫(kù)技術(shù)變革。從商業(yè)數(shù)據(jù)庫(kù)到開(kāi)源數(shù)據(jù)庫(kù)再到自研數(shù)據(jù)庫(kù),我們一直在為這個(gè)使命而努力奮斗。

如果將阿里數(shù)據(jù)庫(kù)發(fā)展歷史分為三個(gè)階段的話,分別是:

第一階段(2005-2009)商業(yè)數(shù)據(jù)庫(kù)時(shí)代;

第二階段(2010-2015)開(kāi)源數(shù)據(jù)庫(kù)時(shí)代;

第三階段(2016年-至今)自研數(shù)據(jù)庫(kù)時(shí)代。

商業(yè)數(shù)據(jù)庫(kù)時(shí)代就是大家所熟知的IOE時(shí)代,后來(lái)發(fā)生了一件大事就是“去IOE”:通過(guò)分布式數(shù)據(jù)庫(kù)中間件TDDL、開(kāi)源數(shù)據(jù)庫(kù)AliSQL(阿里巴巴的MySQL分支)、高性能X86服務(wù)器和SSD,并通過(guò)DBA和業(yè)務(wù)開(kāi)發(fā)同學(xué)的共同努力,成功地替換了商業(yè)數(shù)據(jù)庫(kù)Oracle、IBM小型機(jī)和EMC高端存儲(chǔ),從此進(jìn)入了開(kāi)源數(shù)據(jù)庫(kù)時(shí)代。

去IOE帶來(lái)了三個(gè)重大的意義:

第一是解決了擴(kuò)展性的問(wèn)題,讓數(shù)據(jù)庫(kù)具備了橫向擴(kuò)展(彈性)的能力,為未來(lái)很多年雙11零點(diǎn)交易峰值打下了很好的基礎(chǔ)。

第二是自主可控,我們?cè)贏liSQL中加入了大量的特性,比如:庫(kù)存熱點(diǎn)補(bǔ)丁,SQL限流保護(hù),線程池等等,很多特性都是來(lái)源于雙11對(duì)于數(shù)據(jù)庫(kù)的技術(shù)要求,這在商業(yè)數(shù)據(jù)庫(kù)時(shí)代是完全不可能的。

第三是穩(wěn)定性,原來(lái)在商業(yè)數(shù)據(jù)庫(kù)時(shí)代,就如同把所有的雞蛋放在一個(gè)籃子里(小型機(jī)),去IOE之后不僅僅解決了單機(jī)故障,更是通過(guò)異地多活的架構(gòu)升級(jí)讓數(shù)據(jù)庫(kù)跨出了城市的限制,可以實(shí)現(xiàn)數(shù)據(jù)庫(kù)城市間的多活和容災(zāi),大大提升了系統(tǒng)的可用性。

進(jìn)入2016年,我們開(kāi)始自研數(shù)據(jù)庫(kù),代號(hào)X-DB。大家一定會(huì)問(wèn):為什么要自研數(shù)據(jù)庫(kù)?有以下幾個(gè)原因:

第一,我們需要一個(gè)能夠全球部署的原生分布式數(shù)據(jù)庫(kù),類(lèi)似于Google Spanner。

第二是雙11的場(chǎng)景對(duì)數(shù)據(jù)庫(kù)提出了極高的要求:

性能:在雙11零點(diǎn)需要數(shù)據(jù)庫(kù)提供非常高的讀寫(xiě)能力;

存儲(chǔ)成本:數(shù)據(jù)庫(kù)使用SSD來(lái)存儲(chǔ)數(shù)據(jù),而數(shù)據(jù)存在明顯的冷熱特性,大量冷的歷史數(shù)據(jù)和熱的在線數(shù)據(jù)存放在一起,日積月累,占用了大量寶貴的存儲(chǔ)空間,存儲(chǔ)成本的壓力越來(lái)越大。我們經(jīng)過(guò)認(rèn)真評(píng)估后發(fā)現(xiàn),如果繼續(xù)在開(kāi)源數(shù)據(jù)庫(kù)基礎(chǔ)上進(jìn)行改進(jìn)已經(jīng)無(wú)法滿(mǎn)足業(yè)務(wù)需求。

第三是新的硬件技術(shù)的出現(xiàn),如果說(shuō)SSD的大規(guī)模使用和X86服務(wù)器性能的極大提升推動(dòng)了去IOE的進(jìn)程,那么NVM非易失內(nèi)存,F(xiàn)PGA異構(gòu)計(jì)算,RDMA高速網(wǎng)絡(luò)等技術(shù)將第二次推動(dòng)數(shù)據(jù)庫(kù)技術(shù)的變革。

伴隨著每一年的雙11備戰(zhàn)工作,機(jī)器資源的準(zhǔn)備都是非常重要的一個(gè)環(huán)節(jié)。如何降低雙11的機(jī)器資源成本一直是阿里技術(shù)人不斷挑戰(zhàn)自我的一個(gè)難題。第一個(gè)解決方案就是使用云資源,數(shù)據(jù)庫(kù)從2016年初開(kāi)始就嘗試使用高性能ECS來(lái)解決雙11的機(jī)器資源問(wèn)題。通過(guò)這幾年的雙11的不斷磨練,2018年雙11,我們可以直接使用了公有云ECS,并通過(guò)VPC網(wǎng)絡(luò)與阿里巴巴集團(tuán)內(nèi)部環(huán)境組成混合云,實(shí)現(xiàn)了雙11的彈性大促。

第二個(gè)方案就是在線離線混部,日常讓離線任務(wù)跑在在線(應(yīng)用和數(shù)據(jù)庫(kù))的服務(wù)器上,雙11大促在線應(yīng)用使用離線的計(jì)算資源,要實(shí)現(xiàn)這種彈性能力,數(shù)據(jù)庫(kù)最核心要解決一個(gè)技術(shù)問(wèn)題就是:存儲(chǔ)計(jì)算分離。存儲(chǔ)計(jì)算分離后,數(shù)據(jù)庫(kù)可以在雙11使用離線的計(jì)算資源,從而實(shí)現(xiàn)極致的彈性能力。通過(guò)使用云資源和混部技術(shù),可以最大程度降低雙11交易峰值帶來(lái)的成本。

雙11備戰(zhàn)中另外一個(gè)重要的技術(shù)趨勢(shì)就是:智能化。數(shù)據(jù)庫(kù)和智能化相結(jié)合也是我們一直在探索的一個(gè)方向,比如Self-driving Database等。2017年,我們第一次使用智能化的技術(shù)對(duì)SQL進(jìn)行自動(dòng)優(yōu)化,2018年,我們計(jì)劃全網(wǎng)推廣SQL自動(dòng)優(yōu)化和空間自動(dòng)優(yōu)化,希望可以使用這些技術(shù)降低DBA的工作負(fù)擔(dān),提升開(kāi)發(fā)人員效率,并有效提升穩(wěn)定性。相信未來(lái),在雙11的備戰(zhàn)工作中,會(huì)有越來(lái)越多的工作可以交給機(jī)器來(lái)完成。

我從2012年開(kāi)始參加雙11的備戰(zhàn)工作,多次作為數(shù)據(jù)庫(kù)的隊(duì)長(zhǎng)和技術(shù)保障部總隊(duì)長(zhǎng),在這么多年的備戰(zhàn)工作中,我也經(jīng)歷了很多有意思的故事,在這里分享一些給大家。

2012年:我的第一次雙11

2012年是我的第一次雙11,在此之前,我在B2B的數(shù)據(jù)庫(kù)團(tuán)隊(duì),2012年初,整個(gè)集團(tuán)的基礎(chǔ)設(shè)施團(tuán)隊(duì)都合并到了技術(shù)保障部,由振飛帶領(lǐng)。我之前從來(lái)沒(méi)有參加過(guò)雙11,第一年參加雙11后羿(數(shù)據(jù)庫(kù)團(tuán)隊(duì)的負(fù)責(zé)人)就把隊(duì)長(zhǎng)的職責(zé)給了我,壓力可想而知。那時(shí)候備戰(zhàn)雙11的工作非常長(zhǎng),大概從5、6月份就開(kāi)始準(zhǔn)備了,最重要的工作就是識(shí)別風(fēng)險(xiǎn),并準(zhǔn)確評(píng)估出每個(gè)數(shù)據(jù)庫(kù)的壓力。

我們需要把入口的流量轉(zhuǎn)換為每個(gè)業(yè)務(wù)系統(tǒng)的壓力QPS,然后我們根據(jù)業(yè)務(wù)系統(tǒng)的QPS轉(zhuǎn)換為數(shù)據(jù)庫(kù)的QPS,2012年還沒(méi)有全鏈路壓測(cè)的技術(shù),只能靠每個(gè)業(yè)務(wù)系統(tǒng)的線下測(cè)試,以及每個(gè)專(zhuān)業(yè)線隊(duì)長(zhǎng)一次又一次的開(kāi)會(huì)review來(lái)發(fā)現(xiàn)潛在的風(fēng)險(xiǎn)。

可想而知,這里面存在巨大的不確定性,每個(gè)人都不想自己負(fù)責(zé)的業(yè)務(wù)成為短板,而機(jī)器資源往往是有限的,這時(shí),就完全靠隊(duì)長(zhǎng)的經(jīng)驗(yàn)了,所以,每個(gè)隊(duì)長(zhǎng)所承擔(dān)的壓力都非常巨大。我記得當(dāng)年雙11的大隊(duì)長(zhǎng)是李津,據(jù)說(shuō)他當(dāng)時(shí)的壓力大到無(wú)法入睡,只能在晚上開(kāi)車(chē)去龍井山頂,打開(kāi)車(chē)窗才能小憩一會(huì)。

而我,由于是第一年參加雙11,經(jīng)驗(yàn)為零,完全處于焦慮到死的狀態(tài),幸好當(dāng)年有一群很靠譜兄弟和我在一起,他們剛剛經(jīng)歷了去IOE的洗禮,并且長(zhǎng)期與業(yè)務(wù)開(kāi)發(fā)浸淫在一起,對(duì)業(yè)務(wù)架構(gòu)和數(shù)據(jù)庫(kù)性能如數(shù)家珍,了若指掌。通過(guò)他們的幫助,我基本摸清了交易整套系統(tǒng)的架構(gòu),這對(duì)我未來(lái)的工作幫助非常大。

經(jīng)過(guò)幾個(gè)月緊張的準(zhǔn)備,雙11那天終于到來(lái)了,我們做好了最充分的準(zhǔn)備,但是一切都是那么地不確定,我們懷著忐忑不安的心情,當(dāng)零點(diǎn)到來(lái)的時(shí)候,最壞的情況還是發(fā)生了:庫(kù)存數(shù)據(jù)庫(kù)的壓力完全超過(guò)了容量,同時(shí)IC(商品)數(shù)據(jù)庫(kù)的網(wǎng)卡也被打滿(mǎn)了。我記得很清楚,當(dāng)時(shí)我們看著數(shù)據(jù)庫(kù)的上的監(jiān)控指標(biāo),束手無(wú)策。這里有一個(gè)小細(xì)節(jié):由于我們根本沒(méi)有估算到這么大的壓力,當(dāng)時(shí)監(jiān)控屏幕上數(shù)據(jù)庫(kù)的壓力指標(biāo)顯示超過(guò)了100%。

正在這時(shí),技術(shù)總指揮李津大喊一聲:“大家都別慌!”這時(shí)我們才抬頭看到交易的數(shù)字不斷沖上新高,心里才稍微平靜下來(lái)。事實(shí)上,對(duì)于IC數(shù)據(jù)庫(kù)網(wǎng)卡被打滿(mǎn),庫(kù)存數(shù)據(jù)庫(kù)超過(guò)容量,都超出了我們的預(yù)期,所以最終我們什么預(yù)案也沒(méi)做,就這樣度過(guò)了零點(diǎn)的高峰。

因?yàn)檫@些原因,2012年的的雙11產(chǎn)生了大量的超賣(mài),給公司帶來(lái)了很大的損失。那一年的雙11后,庫(kù)存、商品、退款和相應(yīng)數(shù)據(jù)庫(kù)的同學(xué),為了處理超賣(mài)導(dǎo)致的問(wèn)題,沒(méi)日沒(méi)夜加了兩周的班。而且,我周?chē)芏嗯笥眩荚诒г垢叻鍟r(shí)的用戶(hù)體驗(yàn)實(shí)在太糟糕了。我們下決心要在第二年的雙11解決這些問(wèn)題。

2013年:庫(kù)存熱點(diǎn)優(yōu)化和不起眼的影子表

2012年的雙11結(jié)束后,我們就開(kāi)始著手解決庫(kù)存數(shù)據(jù)庫(kù)的性能提升。庫(kù)存扣減場(chǎng)景是一個(gè)典型的熱點(diǎn)問(wèn)題,即多個(gè)用戶(hù)去爭(zhēng)搶扣減同一個(gè)商品的庫(kù)存(對(duì)數(shù)據(jù)庫(kù)來(lái)說(shuō),一個(gè)商品的庫(kù)存就是數(shù)據(jù)庫(kù)內(nèi)的一行記錄),數(shù)據(jù)庫(kù)內(nèi)對(duì)同一行的更新由行鎖來(lái)控制并發(fā)。我們發(fā)現(xiàn)當(dāng)單線程(排隊(duì))去更新一行記錄時(shí),性能非常高,但是當(dāng)非常多的線程去并發(fā)更新一行記錄時(shí),整個(gè)數(shù)據(jù)庫(kù)的性能會(huì)跌到慘不忍睹,趨近于零。

當(dāng)時(shí)數(shù)據(jù)庫(kù)內(nèi)核團(tuán)隊(duì)做了兩個(gè)不同的技術(shù)實(shí)現(xiàn):一個(gè)是排隊(duì)方案,另一個(gè)并發(fā)控制方案。兩者各有優(yōu)劣,解決的思路都是要把無(wú)序的爭(zhēng)搶變?yōu)橛行虻呐抨?duì),從而提升熱點(diǎn)庫(kù)存扣減的性能問(wèn)題。兩個(gè)技術(shù)方案通過(guò)不斷的完善和PK,最終都做到了成熟穩(wěn)定,滿(mǎn)足業(yè)務(wù)的性能要求,最終為了萬(wàn)無(wú)一失,我們把兩個(gè)方案都集成到了AliSQL(阿里巴巴的MySQL分支)中,并且可以通過(guò)開(kāi)關(guān)控制。最終,我們通過(guò)一整年的努力,在2013年的雙11解決了庫(kù)存熱點(diǎn)的問(wèn)題,這是第一次庫(kù)存的性能提升。在這之后的2016年雙11,我們又做了一次重大的優(yōu)化,把庫(kù)存扣減性能在2013年的基礎(chǔ)上又提升了十倍,稱(chēng)為第二次庫(kù)存性能優(yōu)化。

2013年堪稱(chēng)雙11歷史上里程碑式的一年,因?yàn)檫@一年出現(xiàn)了一個(gè)突破性的技術(shù)-全鏈路壓測(cè)。我非常佩服第一次提出全鏈路壓測(cè)理念的人-李津,他當(dāng)時(shí)問(wèn)我們:有沒(méi)有可能在線上環(huán)境進(jìn)行全仿真的測(cè)試?所有人的回答都是:不可能!當(dāng)然,我認(rèn)為這對(duì)于數(shù)據(jù)庫(kù)是更加不可能的,最大的擔(dān)心是壓測(cè)流量產(chǎn)生的數(shù)據(jù)該如何處理,從來(lái)沒(méi)聽(tīng)說(shuō)過(guò)哪家公司敢在線上系統(tǒng)做壓測(cè),萬(wàn)一數(shù)據(jù)出現(xiàn)問(wèn)題,這個(gè)后果將會(huì)非常嚴(yán)重。

我記得在2013年某天一個(gè)炎熱的下午,我正在庫(kù)存數(shù)據(jù)庫(kù)的問(wèn)題中焦頭爛額的時(shí)候,叔同(全鏈路壓測(cè)技術(shù)負(fù)責(zé)人)來(lái)找我商量全鏈路壓測(cè)數(shù)據(jù)庫(kù)的技術(shù)方案。就在那個(gè)下午,我們兩個(gè)人討論出了一個(gè)“影子表”的方案,即在線上系統(tǒng)中建立一套“影子表”來(lái)存儲(chǔ)和處理所有的壓測(cè)數(shù)據(jù),并且由系統(tǒng)保證兩套表結(jié)構(gòu)的同步。但是,我們對(duì)這件事心里都沒(méi)底,我相信在雙11的前幾周,沒(méi)有幾個(gè)人相信全鏈路壓測(cè)能夠落地,我們大部分的準(zhǔn)備工作還是按照人工review+線下壓測(cè)的方式進(jìn)行。但是,經(jīng)過(guò)所有人的努力,這件事竟然在雙11前兩周取得了突破性進(jìn)展,當(dāng)?shù)谝淮稳溌穳簻y(cè)成功的時(shí)候,所有人都覺(jué)得不敢相信。

最后,雙11的前幾個(gè)晚上,幾乎每天晚上都會(huì)做一輪全鏈路壓測(cè),每個(gè)人都樂(lè)此不疲,給我留下的印象實(shí)在太深刻了。但這個(gè)過(guò)程,也并不是一帆風(fēng)順,我們壓出了很多次故障,多次寫(xiě)錯(cuò)了數(shù)據(jù),甚至影響了第二天的報(bào)表,長(zhǎng)時(shí)間高壓力的壓測(cè)甚至影響了機(jī)器和SSD的壽命。即便出現(xiàn)了如此多的問(wèn)題,大家依然堅(jiān)定地往前走,我覺(jué)得這就是阿里巴巴與眾不同的地方,因?yàn)槲覀兿嘈潘钥匆?jiàn)。事實(shí)也證明,全鏈路壓測(cè)變成了雙11備戰(zhàn)中最有效的大殺器。

如今,全鏈路壓測(cè)技術(shù)已經(jīng)成為阿里云上的一個(gè)產(chǎn)品,變成了更加普惠的技術(shù)服務(wù)更多企業(yè)。

2015年:大屏背后的故事

2015年,我從數(shù)據(jù)庫(kù)的隊(duì)長(zhǎng)成為整個(gè)技術(shù)保障部的總隊(duì)長(zhǎng),負(fù)責(zé)整個(gè)技術(shù)設(shè)施領(lǐng)域的雙11備戰(zhàn)工作,包括IDC、網(wǎng)絡(luò)、硬件、數(shù)據(jù)庫(kù)、CDN,應(yīng)用等所有技術(shù)領(lǐng)域,我第一次面對(duì)如此多的專(zhuān)業(yè)技術(shù)領(lǐng)域,對(duì)我又是一次全新的挑戰(zhàn)。但是,這一次我卻被一個(gè)新問(wèn)題難倒了:大屏。

2015年,我們第一次舉辦天貓雙11晚會(huì),這一年晚會(huì)和媒體中心第一次不在杭州園區(qū),而是選擇在北京水立方,媒體中心全球26小時(shí)直播,全球都在關(guān)注我們雙11當(dāng)天的盛況,需要北京杭州兩地協(xié)同作戰(zhàn),困難和挑戰(zhàn)可想而知!大家都知道對(duì)媒體直播大屏來(lái)說(shuō)最最重要的兩個(gè)時(shí)刻,一個(gè)是雙11零點(diǎn)開(kāi)始的時(shí)刻,一個(gè)是雙11二十四點(diǎn)結(jié)束的時(shí)刻,全程要求媒體直播大屏上跳動(dòng)的GMV數(shù)字盡可能的不延遲,那一年我們?yōu)榱颂嵘本┧⒎浆F(xiàn)場(chǎng)的體驗(yàn)及和杭州總指揮中心的互動(dòng),在零點(diǎn)前有一個(gè)倒計(jì)時(shí)環(huán)節(jié),連線杭州光明頂作戰(zhàn)指揮室,逍遙子會(huì)為大家揭幕2015雙11啟動(dòng),然后直接切換到我們的媒體大屏,所以對(duì)GMV數(shù)字的要求基本上是零延遲,這個(gè)挑戰(zhàn)有多大不言而喻!然而,第一次全鏈路壓測(cè)時(shí)卻非常不盡人意,延時(shí)在幾十秒以上,當(dāng)時(shí)的總指揮振飛堅(jiān)決的說(shuō):GMV第一個(gè)數(shù)字跳動(dòng)必須要在5秒內(nèi),既要求5秒內(nèi)就拿到實(shí)時(shí)的交易數(shù)字,又要求這個(gè)數(shù)字必須是準(zhǔn)確的,所有人都覺(jué)得這是不可能完成的任務(wù)。當(dāng)時(shí),導(dǎo)演組也提了另外一個(gè)預(yù)案,可以在雙11零點(diǎn)后,先顯示一個(gè)數(shù)字跳動(dòng)的特效(不是真實(shí)的數(shù)字),等我們準(zhǔn)備好之后,再切換到真實(shí)的交易數(shù)字,但對(duì)媒體大屏來(lái)說(shuō)所有屏上的數(shù)據(jù)都必須是真實(shí)且正確的(這是阿里人的價(jià)值觀),所以我們不可能用這個(gè)兜底的方案,所有人想的都是如何把延遲做到5秒內(nèi),當(dāng)天晚上,所有相關(guān)的團(tuán)隊(duì)就成立一個(gè)大屏技術(shù)攻關(guān)組,開(kāi)始封閉技術(shù)攻關(guān),別看一個(gè)小小的數(shù)字,背后涉及應(yīng)用和數(shù)據(jù)庫(kù)日志的實(shí)時(shí)計(jì)算、存儲(chǔ)和展示等全鏈路所有環(huán)節(jié),是真正的跨團(tuán)隊(duì)技術(shù)攻關(guān),最終不負(fù)眾望,我們雙11零點(diǎn)GMV第一個(gè)數(shù)字跳動(dòng)是在3秒,嚴(yán)格控制在5秒內(nèi),是非常非常不容易的!不僅如此,為了保證整個(gè)大屏展示萬(wàn)無(wú)一失,我們做了雙鏈路冗余,類(lèi)似于飛機(jī)雙發(fā)動(dòng)機(jī),兩條鏈路同時(shí)計(jì)算,并可實(shí)時(shí)切換。

我想大家一定不了解大屏上一個(gè)小小的數(shù)字,背后還有如此多的故事和技術(shù)挑戰(zhàn)吧。雙11就是如此,由無(wú)數(shù)小的環(huán)節(jié)組成,背后凝聚了每個(gè)阿里人的付出。

2016年:吃自己的狗糧

做過(guò)大規(guī)模系統(tǒng)的人都知道,監(jiān)控系統(tǒng)就如同我們的眼睛一樣,如果沒(méi)有它,系統(tǒng)發(fā)生什么狀況我們都不知道。我們數(shù)據(jù)庫(kù)也有一套監(jiān)控系統(tǒng),通過(guò)部署在主機(jī)上的agent,定期采集主機(jī)和數(shù)據(jù)庫(kù)的關(guān)鍵指標(biāo),包括:CPU和IO利用率,數(shù)據(jù)庫(kù)QPS、TPS和響應(yīng)時(shí)間,慢SQL日志等等,并把這些指標(biāo)存儲(chǔ)在數(shù)據(jù)庫(kù)中,進(jìn)行分析和展示,最初這個(gè)數(shù)據(jù)庫(kù)也是MySQL。

隨著阿里巴巴數(shù)據(jù)庫(kù)規(guī)模越來(lái)越大,整個(gè)監(jiān)控系統(tǒng)就成為了瓶頸,比如:采集精度,受限于系統(tǒng)能力,最初我們只能做到1分鐘,后來(lái)經(jīng)過(guò)歷年的優(yōu)化,我們把采集精度提升到10秒。但是,最讓人感到尷尬的是:每一年雙11零點(diǎn)前,我們通常都有一個(gè)預(yù)案:對(duì)監(jiān)控系統(tǒng)進(jìn)行降級(jí)操作,比如降低采集精度,關(guān)閉某些監(jiān)控項(xiàng)等等。這是因?yàn)楦叻迤诘膲毫μ?,不得已而為之?/p>

另外一個(gè)業(yè)務(wù)挑戰(zhàn)來(lái)自安全部,他們對(duì)我們提出一個(gè)要求,希望能夠采集到每一條在數(shù)據(jù)庫(kù)上運(yùn)行的SQL,并能實(shí)時(shí)送到大數(shù)據(jù)計(jì)算平臺(tái)進(jìn)行分析。這個(gè)要求對(duì)我們更是不可能完成的任務(wù),因?yàn)槊恳粋€(gè)時(shí)刻運(yùn)行的SQL是非常巨大的,通常的做法只能做到采樣,現(xiàn)在要求是一條不漏的記錄下來(lái),并且能夠進(jìn)行分析,挑戰(zhàn)非常大。

2016年雙11,我們啟動(dòng)了一個(gè)項(xiàng)目:對(duì)我們整個(gè)監(jiān)控系統(tǒng)進(jìn)行了重新設(shè)計(jì)。目標(biāo):具備秒級(jí)監(jiān)控能力和全量SQL的采集計(jì)算能力,且雙11峰值不降級(jí)。第一是要解決海量監(jiān)控?cái)?shù)據(jù)的存儲(chǔ)和計(jì)算問(wèn)題,我們選擇了阿里巴巴自研的時(shí)序數(shù)據(jù)庫(kù)TSDB,它是專(zhuān)門(mén)針對(duì)IOT和APM等場(chǎng)景下的海量時(shí)序數(shù)據(jù)而設(shè)計(jì)的數(shù)據(jù)庫(kù)。第二是要解決全量SQL的采集和計(jì)算的問(wèn)題,我們?cè)贏liSQL內(nèi)置了一個(gè)實(shí)時(shí)SQL采集接口,SQL執(zhí)行后不需要寫(xiě)日志就直接通過(guò)消息隊(duì)列傳輸?shù)搅饔?jì)算平臺(tái)上進(jìn)行實(shí)時(shí)處理,實(shí)現(xiàn)了全量SQL的分析與處理。解決了這兩個(gè)技術(shù)難題后,2016年雙11,我們達(dá)到了秒級(jí)監(jiān)控和全量SQL采集的業(yè)務(wù)目標(biāo)。

后來(lái),這些監(jiān)控?cái)?shù)據(jù)和全量SQL成為了一個(gè)巨大的待挖掘的寶庫(kù),通過(guò)對(duì)這些數(shù)據(jù)的分析,并與AI技術(shù)相結(jié)合,我們推出了CloudDBA數(shù)據(jù)庫(kù)智能化診斷引擎。我們相信數(shù)據(jù)庫(kù)的未來(lái)是Self-drvingdatabase,它有四個(gè)特性:自診斷、自?xún)?yōu)化、自決策和自恢復(fù)。如前文所述,目前我們?cè)谥悄芑较蛏弦呀?jīng)取得了一些進(jìn)展。

現(xiàn)在,TSDB已經(jīng)是阿里云上的一個(gè)產(chǎn)品,而CloudDBA除了服務(wù)阿里巴巴內(nèi)部數(shù)萬(wàn)工程師,也已經(jīng)在云上為用戶(hù)提供數(shù)據(jù)庫(kù)優(yōu)化服務(wù)。我們不僅吃自己的狗糧,解決自己的問(wèn)題,同時(shí)也用阿里巴巴的場(chǎng)景不斷磨練技術(shù),服務(wù)更多的云上用戶(hù)。這就是雙11對(duì)技術(shù)的推動(dòng)作用。

2016-2017:數(shù)據(jù)庫(kù)和緩存那點(diǎn)兒事

在雙11的歷史上,阿里巴巴自研緩存-Tair是非常重要的技術(shù)產(chǎn)品,數(shù)據(jù)庫(kù)正是因?yàn)橛辛薚air的幫助,才扛起了雙11如此巨大的數(shù)據(jù)訪問(wèn)量。在大規(guī)模使用Tair的同時(shí),開(kāi)發(fā)同學(xué)也希望數(shù)據(jù)庫(kù)可以提供高性能的KV接口,并且通過(guò)KV和SQL兩個(gè)接口查詢(xún)的數(shù)據(jù)是一致的,這樣可以大大簡(jiǎn)化業(yè)務(wù)開(kāi)發(fā)的工作量,X-KV因此因用而生,它是X-DB的KV組件,通過(guò)繞過(guò)SQL解析的過(guò)程,直接訪問(wèn)內(nèi)存中的數(shù)據(jù),可以實(shí)現(xiàn)非常高的性能以及比SQL接口低數(shù)倍的響應(yīng)時(shí)間。X-KV技術(shù)在2016年雙11第一次得到了應(yīng)用,用戶(hù)反饋非常好,QPS可以做到數(shù)十萬(wàn)級(jí)別。在2017年雙11,我們又做了一個(gè)黑科技,通過(guò)中間件TDDL自動(dòng)來(lái)實(shí)現(xiàn)SQL和KV的轉(zhuǎn)換,開(kāi)發(fā)不再需要同時(shí)開(kāi)發(fā)兩套接口,只需要用SQL訪問(wèn)數(shù)據(jù)庫(kù),TDDL會(huì)自動(dòng)在后臺(tái)把SQL自動(dòng)轉(zhuǎn)換為KV接口,進(jìn)一步提升了開(kāi)發(fā)的效率,降低了數(shù)據(jù)庫(kù)的負(fù)載。

2016年雙11,Tair碰到了一個(gè)業(yè)界技術(shù)難題:熱點(diǎn)。大家都知道緩存系統(tǒng)中一個(gè)key永遠(yuǎn)只能分布在一臺(tái)機(jī)器上,但是雙11時(shí),熱點(diǎn)非常集中,加上訪問(wèn)量非常大,很容易就超出了單機(jī)的容量限制,CPU和網(wǎng)卡都會(huì)成為瓶頸。由于熱點(diǎn)無(wú)法預(yù)測(cè),可能是流量熱點(diǎn),也可能是頻率熱點(diǎn),造成2016年雙11我們就像消防隊(duì)員一樣四處滅火,疲于奔命。2017年,Tair團(tuán)隊(duì)的同學(xué)就在思考如何解決這個(gè)業(yè)界的技術(shù)難題,并且創(chuàng)新性地提出了一種自適應(yīng)熱點(diǎn)的技術(shù)方案:第一是智能識(shí)別技術(shù), Tair內(nèi)部采用多級(jí)LRU的數(shù)據(jù)結(jié)構(gòu),通過(guò)將訪問(wèn)數(shù)據(jù)Key的頻率和大小設(shè)定不同權(quán)值,從而放到不同層級(jí)的LRU上,這樣淘汰時(shí)可以確保權(quán)值高的那批Key得到保留。最終保留下來(lái)且超過(guò)閾值設(shè)定的就會(huì)判斷為熱點(diǎn)Key。第二是動(dòng)態(tài)散列技術(shù),當(dāng)發(fā)現(xiàn)熱點(diǎn)后,應(yīng)用服務(wù)器和Tair服務(wù)端就會(huì)聯(lián)動(dòng)起來(lái),根據(jù)預(yù)先設(shè)定好的訪問(wèn)模型,將熱點(diǎn)數(shù)據(jù)動(dòng)態(tài)散列到Tair服務(wù)端其它數(shù)據(jù)節(jié)點(diǎn)的HotZone存儲(chǔ)區(qū)域去訪問(wèn)。

熱點(diǎn)散列技術(shù)在2017年雙11中取得了非常顯著的效果,通過(guò)將熱點(diǎn)散列到整個(gè)集群,所有集群的水位均降低到了安全線下。如果沒(méi)有這個(gè)能力,那么2017年雙11很多Tair集群都可能出現(xiàn)問(wèn)題。

可以看出,數(shù)據(jù)庫(kù)和緩存是一對(duì)互相依賴(lài)的好伙伴,他們互相借鑒,取長(zhǎng)補(bǔ)短,共同撐起了雙11海量數(shù)據(jù)存儲(chǔ)和訪問(wèn)的一片天。

2016-2017年:如絲般順滑的交易曲線是如何做到的

自從有了全鏈路壓測(cè)這項(xiàng)技術(shù)后,我們希望每一年雙11零點(diǎn)的交易曲線都能如絲般順滑,但是事情往往不像預(yù)期的那樣順利。2016年雙11零點(diǎn)后,交易曲線出現(xiàn)了一些波動(dòng),才攀逐步升到最高點(diǎn)。事后復(fù)盤(pán)時(shí),我們發(fā)現(xiàn)主要的問(wèn)題是購(gòu)物車(chē)等數(shù)據(jù)庫(kù)在零點(diǎn)的一剎那,由于Buffer pool中的數(shù)據(jù)是“冷”的,當(dāng)大量請(qǐng)求在零點(diǎn)一瞬間到來(lái)時(shí),數(shù)據(jù)庫(kù)需要先“熱”起來(lái),需要把數(shù)據(jù)從SSD讀取到Buffer pool中,這就導(dǎo)致瞬間大量請(qǐng)求的響應(yīng)時(shí)間變長(zhǎng),影響了用戶(hù)的體驗(yàn)。

知道了問(wèn)題原因后,2017年我們提出了“預(yù)熱””技術(shù),即在雙11前,讓各個(gè)系統(tǒng)充分“熱”起來(lái),包括Tair,數(shù)據(jù)庫(kù),應(yīng)用等等。為此專(zhuān)門(mén)研發(fā)了一套預(yù)熱系統(tǒng),預(yù)熱分為數(shù)據(jù)預(yù)熱和應(yīng)用預(yù)熱兩大部分,數(shù)據(jù)預(yù)熱包括:數(shù)據(jù)庫(kù)和緩存預(yù)熱,預(yù)熱系統(tǒng)會(huì)模擬應(yīng)用的訪問(wèn),通過(guò)這種訪問(wèn)將數(shù)據(jù)加載到緩存和數(shù)據(jù)庫(kù)中,保證緩存和數(shù)據(jù)庫(kù)BP的命中率。應(yīng)用預(yù)熱包括:預(yù)建連接和JIT預(yù)熱,我們會(huì)在雙11零點(diǎn)前預(yù)先建立好數(shù)據(jù)庫(kù)連接,防止在高峰時(shí)建立連接的開(kāi)銷(xiāo)。同時(shí),因?yàn)闃I(yè)務(wù)非常復(fù)雜,而JAVA代碼是解釋執(zhí)行的,如果在高峰時(shí)同時(shí)做JIT編譯,會(huì)消耗了大量的CPU,系統(tǒng)響應(yīng)時(shí)間會(huì)拉長(zhǎng),通過(guò)JIT預(yù)熱,保證代碼可以提前充分編譯。

2017年雙11,因?yàn)橄到y(tǒng)有了充分的預(yù)熱,交易曲線在零點(diǎn)時(shí)劃出了一道完美的曲線。

2017-2018年:存儲(chǔ)計(jì)算分離的技術(shù)突破

2017年初,集團(tuán)高年級(jí)技術(shù)同學(xué)們發(fā)起了一個(gè)技術(shù)討論:到底要不要做存儲(chǔ)計(jì)算分離?由此引發(fā)了一場(chǎng)擴(kuò)日持久的大討論。包括我在王博士的班上課時(shí),針對(duì)這個(gè)問(wèn)題也進(jìn)行了一次技術(shù)辯論,由于兩方觀點(diǎn)勢(shì)均力敵,最終誰(shuí)也沒(méi)有說(shuō)服誰(shuí)。對(duì)于數(shù)據(jù)庫(kù)來(lái)說(shuō),存儲(chǔ)計(jì)算分離更加是一個(gè)非常敏感的技術(shù)話題,大家都知道在IOE時(shí)代,小型機(jī)和存儲(chǔ)之間通過(guò)SAN網(wǎng)絡(luò)連接,本質(zhì)上就是屬于存儲(chǔ)計(jì)算分離架構(gòu)。現(xiàn)在我們又要回到這個(gè)架構(gòu)上,是不是技術(shù)的倒退?另外,對(duì)于數(shù)據(jù)庫(kù)來(lái)說(shuō),IO的響應(yīng)延時(shí)直接影響了數(shù)據(jù)庫(kù)的性能,如何解決網(wǎng)絡(luò)延時(shí)的問(wèn)題?各種各樣的問(wèn)題一直困擾著我們,沒(méi)有任何結(jié)論。

當(dāng)時(shí),數(shù)據(jù)庫(kù)已經(jīng)可以使用云ECS資源來(lái)進(jìn)行大促?gòu)椥詳U(kuò)容,并且已經(jīng)實(shí)現(xiàn)了容器化部署。但是,我們無(wú)論如何也無(wú)法回避的一個(gè)問(wèn)題就是:如果計(jì)算和存儲(chǔ)綁定在一起,就無(wú)法實(shí)現(xiàn)極致的彈性,因?yàn)橛?jì)算節(jié)點(diǎn)的遷移必須“搬遷”數(shù)據(jù)。而且,我們研究了計(jì)算和存儲(chǔ)的能力的增長(zhǎng)曲線,我們發(fā)現(xiàn)在雙11高峰時(shí),對(duì)于計(jì)算能力的要求陡增,但是對(duì)于存儲(chǔ)能力的要求并沒(méi)有發(fā)生顯著變化,如果可以實(shí)現(xiàn)存儲(chǔ)計(jì)算分離,雙11高峰我們只需要擴(kuò)容計(jì)算節(jié)點(diǎn)就可以了。綜上所述,存儲(chǔ)計(jì)算分離是華山一條路,必須搞定。

2017年中,為了驗(yàn)證可行性,我們選擇在開(kāi)源分布式存儲(chǔ)Ceph的基礎(chǔ)上進(jìn)行優(yōu)化,與此同時(shí),阿里巴巴自研高性能分布式存儲(chǔ)盤(pán)古2.0也在緊鑼密鼓的開(kāi)發(fā)中。另外一方面,數(shù)據(jù)庫(kù)內(nèi)核團(tuán)隊(duì)也參與其中,通過(guò)數(shù)據(jù)庫(kù)內(nèi)核優(yōu)化減少網(wǎng)絡(luò)延遲對(duì)數(shù)據(jù)庫(kù)性能的影響。經(jīng)過(guò)大家的共同努力,最終基于盤(pán)古2.0的計(jì)算存儲(chǔ)分離方案都在2017年雙11落地,并且驗(yàn)證了使用離線機(jī)頭掛載共享存儲(chǔ)的彈性方案。經(jīng)過(guò)這次雙11,我們證明了數(shù)據(jù)庫(kù)存儲(chǔ)計(jì)算分離是完全可行的。

存儲(chǔ)計(jì)算分離的成功離不開(kāi)一位幕后英雄:高性能和低延遲網(wǎng)絡(luò),2017年雙11我們使用了25G的TCP網(wǎng)絡(luò),為了進(jìn)一步降低延遲,2018年雙11我們大規(guī)模使用了RDMA技術(shù),大幅度降低了網(wǎng)絡(luò)延遲,這么大規(guī)模的RDMA應(yīng)用在整個(gè)業(yè)界都是獨(dú)一無(wú)二的。為了降低IO延遲,我們?cè)谖募到y(tǒng)這個(gè)環(huán)節(jié)也做了一個(gè)大殺器-DBFS,通過(guò)用戶(hù)態(tài)技術(shù),旁路kernel,實(shí)現(xiàn)I/O路徑的Zero copy。通過(guò)這些技術(shù)的應(yīng)用,達(dá)到了接近于本存儲(chǔ)地的延時(shí)和吞吐。

2018年雙11,隨著存儲(chǔ)計(jì)算分離技術(shù)的大規(guī)模使用,標(biāo)志著數(shù)據(jù)庫(kù)進(jìn)入了一個(gè)新的時(shí)代。

總結(jié)

在2012年到2018年的這六年,我見(jiàn)證了零點(diǎn)交易數(shù)字的一次次提升,見(jiàn)證了背后數(shù)據(jù)庫(kù)技術(shù)的一次次突破,更見(jiàn)證了阿里人那種永不言敗的精神,每一次化“不可能”為“可能”的過(guò)程都是阿里技術(shù)人對(duì)技術(shù)的不懈追求。

云服務(wù)器99元拼團(tuán)購(gòu)!拉新還可贏現(xiàn)金紅包!300萬(wàn)等你瓜分!
馬上一鍵開(kāi)團(tuán)贏紅包: http://click.aliyun.com/m/100...


本文作者:張瑞

閱讀原文

本文來(lái)自云棲社區(qū)合作伙伴“阿里技術(shù)”,如需轉(zhuǎn)載請(qǐng)聯(lián)系原作者。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/17818.html

相關(guān)文章

  • JavaScript "相等" 的二三事

    摘要:還規(guī)定了無(wú)窮及其它的相應(yīng)規(guī)范,有興趣可自行查找相關(guān)資料。其它相同數(shù)值相等。類(lèi)型中,引用同一對(duì)象,相等。不同點(diǎn)對(duì)的判斷上各有不同。以為代表的相等和相等以為代表的不相等和相等以為代表的相等和不相等相同類(lèi)型采用嚴(yán)格比較。 相等不相等? 先來(lái)隨便舉幾個(gè)?吧~ 0 == true //? [1] == [1] //? [1] == 1 ...

    wanghui 評(píng)論0 收藏0
  • 前端渲染過(guò)程的二三事

    摘要:前端渲染過(guò)程的二三事本文不會(huì)介紹整個(gè)前端渲染過(guò)程的步驟,只是記錄最近閱讀的文章的些許思考和感悟。那么現(xiàn)在我們可以明白這個(gè)問(wèn)題的關(guān)鍵所在了,因?yàn)樵诖蟛糠猪?yè)面中是擁有的,而由于其解析順序,那么在事件之前必定已經(jīng)成功構(gòu)造樹(shù)。 前端渲染過(guò)程的二三事 本文不會(huì)介紹整個(gè)前端渲染過(guò)程的步驟,只是記錄最近閱讀的文章的些許思考和感悟。(文章地址一(系列),文章地址二) 希望大家在閱讀這篇文章之前能將上述...

    Rindia 評(píng)論0 收藏0
  • 數(shù)組方法的二三事

    摘要:常用的數(shù)組方法刪除數(shù)組的最后一個(gè)元素,返回被刪除的元素,原數(shù)組長(zhǎng)度減。原數(shù)組發(fā)生了變化,但沒(méi)有創(chuàng)建新的數(shù)組。將指定數(shù)組進(jìn)行排序,返回排好序的數(shù)組。顛倒數(shù)組元素的順序,返回逆序后的數(shù)組。 數(shù)組,對(duì)于每一個(gè)前端人員來(lái)說(shuō)是非常常見(jiàn)且重要的數(shù)據(jù)結(jié)構(gòu)之一,也是面試常常出現(xiàn)的題目,掌握數(shù)組的方法能幫助我們更高效地處理問(wèn)題。不過(guò)在數(shù)組的學(xué)習(xí)中,我們常常會(huì)混淆數(shù)組本身的方法和Javascript提供的...

    VincentFF 評(píng)論0 收藏0
  • 關(guān)于UUID的二三事

    摘要:規(guī)范定義來(lái)自于發(fā)布的一個(gè)規(guī)范。其中的字母是進(jìn)制表示,大小寫(xiě)無(wú)關(guān)。在里面的使用的例子其中,最后的個(gè)字符就是我電腦網(wǎng)卡的地址版本安全的安全的和基于時(shí)間的算法相同,但會(huì)把時(shí)間戳的前位置換為的或。 一、簡(jiǎn)介 UUID,是Universally Unique Identifier的縮寫(xiě),UUID出現(xiàn)的目的,是為了讓分布式系統(tǒng)可以不借助中心節(jié)點(diǎn),就可以生成UUID來(lái)標(biāo)識(shí)一些唯一的信息; GUID,...

    2json 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<