互聯(lián)網(wǎng)大數(shù)據(jù)時(shí)代下亞馬遜是如何解決數(shù)據(jù)存儲的
在這個(gè)互聯(lián)網(wǎng)時(shí)代的背景下,新的電商平臺層出不窮。一提到亞馬遜平臺相信大家都不陌生,從虛擬到實(shí)體,從一開始的網(wǎng)絡(luò)書店,發(fā)展到互聯(lián)網(wǎng)行業(yè)的佼佼者。亞馬遜和亞馬遜云科技踐行可持續(xù)發(fā)展模式,為無數(shù)的企業(yè)提供了解決方案。 現(xiàn)如今數(shù)百萬的組織在亞馬遜云科技計(jì)算平臺上運(yùn)行不同的工作負(fù)載,實(shí)現(xiàn)云上效率飛升和成本降低。
也正因?yàn)檫@樣,Gartner 魔力象限已經(jīng)連續(xù)第11年將亞馬遜云科技列為云基礎(chǔ)設(shè)施平臺,以及服務(wù)象限的領(lǐng)導(dǎo)者。
對于一個(gè)普通的消費(fèi)者而言,亞馬遜是世界最大的網(wǎng)絡(luò)零售商,銷售額占到了美國服裝行業(yè)的1/3以上。對于跨境電商賣家來說,亞馬遜是一個(gè)高端且有高利潤的平臺。亞馬遜一點(diǎn)通的服務(wù),則更是在一定程度上極大地便利了人們的生活。
那么大家有沒想過,亞馬遜平臺發(fā)展的這么好,為什么要涉及云計(jì)算,云服務(wù)呢?答案也很簡單,自己要用。
亞馬遜平臺的自我發(fā)展改革
亞馬遜云科技的母公司,也就是亞馬遜,本身就是世界上最大的電商平臺。而電商對基礎(chǔ)架構(gòu)的要求特別高,因此對云服務(wù)需求非常強(qiáng)烈。 這種需求一般都帶有四個(gè)特征。
- 電子商務(wù)是一種季節(jié)性很強(qiáng)的業(yè)務(wù)。黑五或者雙十一,電商網(wǎng)站的流量會(huì)暴漲,因此服務(wù)器必須可以彈性擴(kuò)容,一防宕機(jī),二防浪費(fèi)。
- 電商平臺涉及大量商品SKU,各種商品信息和歷史交易信息都得找個(gè)地方存儲,所以需要大量的存儲空間。
- 電商是交易平臺,凡是和錢直接打交道的生意,必須穩(wěn)字當(dāng)頭。所以底層架構(gòu)必須穩(wěn)定。
- 電商平臺上有很多第三方賣家,因此平臺的可擴(kuò)展性和兼容性也很重要。
這些需求,那些主營賣廣告的門戶網(wǎng)站,賣軟件的IT公司,開發(fā)硬件的同行都不需要考慮,但對于亞馬遜這么一個(gè)飛速發(fā)展的電商平臺,屬于是卡脖子的問題,所以說,別人開發(fā)云服務(wù)是為了賺錢,亞馬遜是為了求生。但也正是在2006年涉及云服務(wù)后,在短短的十年間,它可以說乘著云服務(wù)趨勢改變了整個(gè)IT行業(yè)。
關(guān)于這句話,絕對不是空穴來風(fēng)!
據(jù) Canalys 的分析師估計(jì), Amazon 在云基礎(chǔ)設(shè)施即服務(wù)(IaaS)市場的份額達(dá)到33.8%,比它的三大勁敵微軟 Azure、谷歌 Google Cloud 和 IBM 的合計(jì)份額(30.8%)還要高。
從2006年邁出的一小步,推出 Amazon Web Services,以 Web 服務(wù)的形式向企業(yè)提供 IT 基礎(chǔ)設(shè)施服務(wù)。以一個(gè)簡單的數(shù)據(jù)中心機(jī)柜和幾臺電腦為出發(fā)點(diǎn),開始思考和探索“如何讓計(jì)算變得像開燈一樣簡單”。 在這里,亞馬遜云科技開始構(gòu)建云的核心基礎(chǔ)架構(gòu)。通過將虛擬機(jī)和存儲服務(wù)提供給開發(fā)者,用戶不需要構(gòu)建自己的服務(wù)器,就可以獲取計(jì)算和存儲能力,并且可以像水電一樣隨取隨用。
到如今16年在云服務(wù)中走出了一大步,從云服務(wù)到云無處不在,從數(shù)據(jù)爆發(fā)到AI應(yīng)用,云基礎(chǔ)架構(gòu)的創(chuàng)新從未停止。亞馬遜云基礎(chǔ)架構(gòu),在計(jì)算(Amazon Graviton 已經(jīng)從第一代演進(jìn)到第三代,實(shí)現(xiàn)云底座重構(gòu),計(jì)算性能大幅提升, Amazon EC2向自動(dòng)優(yōu)化、自動(dòng)鏡像發(fā)展,加速云計(jì)算創(chuàng)新),存儲(極具廣度和深度的存儲選項(xiàng):提供靈活部署方式,方便用戶管理數(shù)據(jù))網(wǎng)絡(luò),安全,可持續(xù)發(fā)展,5大領(lǐng)域的創(chuàng)新成果,有目共睹。
云服務(wù)解決了那些實(shí)際問題
在五大創(chuàng)新領(lǐng)域中,存儲技術(shù)問題可能是電商平臺最注重的技術(shù)之一。就拿數(shù)據(jù)庫來講。1995年亞馬遜創(chuàng)立時(shí),所有的邏輯只在一個(gè)單體應(yīng)用里,也只有一個(gè)數(shù)據(jù)庫。
隨著業(yè)務(wù)的拓展,到了2001年,亞馬遜進(jìn)入了面向服務(wù)架構(gòu)(SOA)階段,比如商品、訂單、服務(wù)等模塊都在那個(gè)時(shí)期形成。此后,亞馬遜進(jìn)入到了更多的領(lǐng)域,產(chǎn)品迭代和客戶體驗(yàn)迭代的速度越來越快,這些已經(jīng)按照SOA拆分出來的模塊,自己又會(huì)變成超大的單體。所以2002年開始到2006年,亞馬遜正式啟動(dòng)了微服務(wù)化架構(gòu)。通過采用微服務(wù)、配合專門構(gòu)建的數(shù)據(jù)庫,企業(yè)可以擺脫傳統(tǒng)單一的數(shù)據(jù)庫在性能、功能、擴(kuò)展性等方面的桎梏,有效提高創(chuàng)新速度,并且降低成本。
十多年來,亞馬遜云科技不斷加速數(shù)據(jù)庫相關(guān)服務(wù)落地,并針對不同應(yīng)用場景需求推出了多種數(shù)據(jù)庫服務(wù)產(chǎn)品,為客戶提供兼具高性能、高可用性、可擴(kuò)展及成本效益的專用數(shù)據(jù)庫服務(wù),支撐客戶現(xiàn)代化應(yīng)用的快速部署及創(chuàng)新。目前亞馬遜云科技可以提供十多種專門構(gòu)建的數(shù)據(jù)庫服務(wù),支持關(guān)系、鍵值、文檔、內(nèi)存、圖、時(shí)間序列、寬列和分類賬八大數(shù)據(jù)類型。
亞馬遜云科技提供了100余種產(chǎn)品免費(fèi)套餐。其中,計(jì)算資源Amazon EC2首年12個(gè)月免費(fèi),750小時(shí)/月;存儲資源 Amazon S3 首年12個(gè)月免費(fèi),5GB標(biāo)準(zhǔn)存儲容量。
??https://aws.amazon.com/cn/free/??
不僅價(jià)格優(yōu)惠活動(dòng)力度大,專為云平臺打造的關(guān)系型數(shù)據(jù)庫 Amazon Aurora 也是目前亞馬遜云科技?xì)v史上用戶數(shù)量增速最快的云服務(wù)。
Amazon Aurora 云數(shù)據(jù)庫
由于 Aurora 是為了代替 MySQL,而 MySQL 用于關(guān)系型數(shù)據(jù)庫,所以 Aurora 僅負(fù)責(zé)處理關(guān)系型數(shù)據(jù)庫的服務(wù),即 RDS(Relational Database Service)。我們其實(shí)可以從圖中看出相當(dāng)多的信息,Aurora 僅有 Primary RW(Read/Write) DB一個(gè)主節(jié)點(diǎn)用于處理寫請求,而其余的則為從節(jié)點(diǎn) Secondary RO(Read-Only) DB用于處理讀請求,論文中指出 Secondary RO DB(也就是只讀副本)可以多達(dá)15個(gè)。另外,每個(gè) Aurora 配備六個(gè)存儲節(jié)點(diǎn),它們分布于區(qū)域中的三個(gè)可用區(qū)中,提供優(yōu)異的數(shù)據(jù)持久性和可用性。其中有兩個(gè)節(jié)點(diǎn)使用 Amazon Simple Storage Service(S3)存儲技術(shù)進(jìn)行備份,而剩余4個(gè)節(jié)點(diǎn)則直接存儲在本地的 SSD 上。
用戶的應(yīng)用通過 Customer VPC 接入,然后可以讀寫位于不同 AZ(Availability Zone)的數(shù)據(jù)庫。而不同的 AZ 分布于全球的不同的Region中。當(dāng)用戶的請求發(fā)送到 Primary RW DB 時(shí),RDS HM(Host Manager)會(huì)檢測到請求,并調(diào)用Aurora 進(jìn)行相應(yīng)的操作。如果是寫操作,則將相關(guān)信息發(fā)送給 Secondary RO DB進(jìn)行備份,同時(shí)將命令寫入存儲節(jié)點(diǎn)。如果是讀操作,則直接從存儲節(jié)點(diǎn)讀取數(shù)據(jù)返回。
使用傳統(tǒng) MySQL 遇到的性能問題
Amazon 在日常開發(fā)和維護(hù)中發(fā)現(xiàn),計(jì)算能力和存儲性能已經(jīng)不再是其工作的瓶頸了,取而代之的是網(wǎng)絡(luò)的流量。其實(shí)對于 Amazon 來說,只要有錢,CPU 能用最好的就能解決計(jì)算能力的問題,機(jī)械硬盤不夠用固態(tài)硬盤,固態(tài)硬盤不夠就上內(nèi)存,存儲性能也解決了,但是網(wǎng)絡(luò)的延遲靠大帶寬是很難解決的,而拉近機(jī)房位置也是有上限的,必須要從業(yè)務(wù)邏輯和服務(wù)組件上找問題。所以他們發(fā)現(xiàn)了 MySQL 在分布式系統(tǒng)中消耗了大量的流量,還提高了延遲。具體如下圖所示。
從圖中我們可以看出,傳統(tǒng)的 MySQL 如果想要執(zhí)行一次寫入操作必須經(jīng)歷以下幾步:
- 主節(jié)點(diǎn)將數(shù)據(jù)寫入 EBS1
- EBS1 將數(shù)據(jù)寫入備份鏡像 EBS2
- 主節(jié)點(diǎn)將相關(guān)數(shù)據(jù)發(fā)送給從節(jié)點(diǎn)
- 從節(jié)點(diǎn)將數(shù)據(jù)寫入 EBS3
- EBS3 將數(shù)據(jù)寫入 EBS4
其中,第1,3,5步是串行的,也就是說,只有第1步完成了,才能執(zhí)行第3步,第3步完成了才能執(zhí)行第5步。這無疑增加了服務(wù)器返回?cái)?shù)據(jù)的延遲。另外傳統(tǒng)的 MySQL 在寫入和傳輸數(shù)據(jù)時(shí)還需要很多的額外信息,這又增加了網(wǎng)絡(luò)帶寬的消耗。也就是說,MySQL 的使用在分布式系統(tǒng)產(chǎn)生了兩個(gè)問題。
- 應(yīng)答延遲太高
- 消耗網(wǎng)絡(luò)帶寬太多
所以當(dāng) Amazon 發(fā)現(xiàn)使用傳統(tǒng) MySQL 的弊端之后,決定設(shè)計(jì)新的組件來代替 MySQL 以解決上述兩個(gè)問題。
組件1:The Log Is The Database
針對 MySQL 在同步數(shù)據(jù)的過程中發(fā)送的信息太多,這該怎么辦呢?Amazon 也算是家大業(yè)大,直接自己重新設(shè)計(jì)標(biāo)準(zhǔn),以往的數(shù)據(jù)庫是真的數(shù)據(jù)庫,現(xiàn)在他們用WAL也就是 Log 來整合所有有用的信息并刪去無用的信息,既減少了數(shù)據(jù)傳輸量又保證了需要保留的信息。同時(shí),他們使用了鏈?zhǔn)綇?fù)制結(jié)構(gòu)代替主從結(jié)構(gòu),簡化了保證數(shù)據(jù)一致性的復(fù)雜度。具體架構(gòu)如下圖所示。
以三個(gè)副本為例,當(dāng)位于AZ1的主節(jié)點(diǎn)收到寫請求后,它將請求的相關(guān)數(shù)據(jù)直接寫入六個(gè)存儲節(jié)點(diǎn)中,然后,將數(shù)據(jù)和一些額外的信息通過鏈?zhǔn)綇?fù)制結(jié)構(gòu)傳遞給位于 AZ2和 AZ3其他節(jié)點(diǎn)。和上圖進(jìn)行對比,明顯可以看到主從節(jié)點(diǎn)之間網(wǎng)絡(luò)通信中傳輸?shù)臄?shù)據(jù)減少了,主節(jié)點(diǎn)向存儲節(jié)點(diǎn)寫入數(shù)據(jù)時(shí)也從五種數(shù)據(jù)變?yōu)橐环N。這里要特別指出的是,此處的數(shù)據(jù)已經(jīng)從 MySQ 定義的 Log 變?yōu)?Amazon 為 Aurora 量身定制的 Log。由于需要傳輸數(shù)據(jù)量的減少,同步所消耗的網(wǎng)絡(luò)帶寬也大幅地減少了。
另外,因?yàn)橹鞴?jié)點(diǎn)負(fù)責(zé)將 Log 寫入存儲節(jié)點(diǎn),而從節(jié)點(diǎn)僅存儲 Log 不需要負(fù)責(zé)寫入存儲節(jié)點(diǎn),這樣就減少了在 MySQL 中額外的第四步和第五步操作的時(shí)間。而 MySQL 中的兩級EBS存儲操作也由一級 Quorum 的代替,就像上一篇文章提到的,兩級存儲的時(shí)間是兩次操作的時(shí)間之和,而一級的 Quorum 操作的時(shí)間則是取決于 Quorum 中最長的應(yīng)答時(shí)間。這樣, Aurora 也優(yōu)化了應(yīng)答延遲的時(shí)間。
組件2:Storage Node
上面,我們提到主節(jié)點(diǎn)將 Redo Log 寫入存儲節(jié)點(diǎn)。但是,此時(shí) Redo Log 還未執(zhí)行,需要在存儲節(jié)點(diǎn)中執(zhí)行相應(yīng)的操作后才算真正完成。下面,我們再來看看 Redo Log 到達(dá)存儲節(jié)點(diǎn)以后需要進(jìn)行哪些操作。論文中給出的流程圖如下。
具體的流程解釋如下
- 存儲節(jié)點(diǎn)通過 Incoming Queue 接受主節(jié)點(diǎn)的 Log。
- 存儲節(jié)點(diǎn)將 Log 存到本地硬盤后向主節(jié)點(diǎn)發(fā)送 ACK,用以確認(rèn) Quorum。
- 由于網(wǎng)絡(luò)的不可靠和 Quorum 機(jī)制,當(dāng)前存儲節(jié)點(diǎn)可能缺失了部分Log。在這一步,它將 Log 排序并找出缺失的 Log。
- 通過和其他存儲節(jié)點(diǎn)進(jìn)行交換信息,將缺失的 Log 復(fù)制到本地,將所有 Log 填充完整。
- 到目前為止,系統(tǒng)中存儲的仍是 Log 而非用戶需要數(shù)據(jù),這一步執(zhí)行 Log 對應(yīng)的操作,并寫入數(shù)據(jù)庫中。
- 定期地將數(shù)據(jù)存為快照并存入 Amazon S3中。
- 定期地進(jìn)行垃圾收集,刪除過期數(shù)據(jù)。
- 用 CRC 定期檢驗(yàn)數(shù)據(jù)。
從流程中我們可以看到,只有第一步和第二步可能影響應(yīng)答延遲,其余的步驟都由存儲節(jié)點(diǎn)在后臺執(zhí)行。這樣一來,因?yàn)闊o需等待執(zhí)行完畢,應(yīng)答延遲就進(jìn)一步降低了。Amazon Aurora 描述的技術(shù)看起似乎很通用,使用 WAL 代替 MySQL 的信息,在存儲節(jié)點(diǎn)執(zhí)行命令而不是在本機(jī)執(zhí)行,使用 Chain Replication 等等。 但是能將這些技術(shù)恰到好處地使用在實(shí)際的系統(tǒng)中,并進(jìn)行優(yōu)化才是大廠的技術(shù)底蘊(yùn)。 這里講的恐怕只算是對 Aurora 的驚鴻一瞥,真的想了解實(shí)現(xiàn)細(xì)節(jié)還得去 Amazon 內(nèi)部看看。
用數(shù)據(jù)來說明它的性能
官網(wǎng)對 Amazon Aurora 的性能是這樣描述的:吞吐量最高可以達(dá)到標(biāo)準(zhǔn) MySQL 的 5 倍、標(biāo)準(zhǔn) PostgreSQL 的 3 倍。這些平淡的文字可能無法引起你的共鳴,下面給大家看一組亞馬遜近些年來的統(tǒng)計(jì)數(shù)據(jù),來看看通過自身研發(fā)的技術(shù)能應(yīng)對多少數(shù)據(jù)量。
亞馬遜活躍賣家
截止到2019年12月31日,亞馬遜全站點(diǎn)約有800多萬的賣家,其中有293萬的活躍賣家,也就是有293萬的賣家當(dāng)前有商品在售。上圖左邊兩列數(shù)據(jù),是根據(jù)活躍賣家的數(shù)量將這16個(gè)站點(diǎn)劃分為了三個(gè)梯隊(duì)。第一個(gè)梯隊(duì)是美國站,活躍賣家數(shù)量超過了100萬,占比38%;第二梯隊(duì)是以英國為首的歐洲五站以及印度、日本和加拿大,活躍賣家數(shù)都在15萬到30萬之間;第三梯隊(duì)是墨西哥到新加坡,活躍賣家數(shù)在5萬及5萬以下,去年新開的3個(gè)站點(diǎn)都在這個(gè)梯隊(duì)。右邊兩列的數(shù)據(jù),是活躍賣家的增長數(shù)量。排名前三的站點(diǎn)分別是巴西、墨西哥和西班牙。亞馬遜2019年10月11日接受美國司法制裁時(shí)透露:美國站有89.8萬的賣家,其中有38.4萬的個(gè)人賣家和51.4萬的企業(yè)賣家,個(gè)人賣家約占40%。這個(gè)數(shù)據(jù)表明,在亞馬遜的美國站,個(gè)人賣家非?;钴S。
日訪問次數(shù)
接著,是亞馬遜各站點(diǎn)的日訪問人次,也就是流量情況。我們統(tǒng)計(jì)了其中8個(gè)賣家比較關(guān)心的站點(diǎn),分別是美國、日本、加拿大和歐洲五站。它們按照日訪問人次的多少排序,依次是美國、日本、德國、英國、法國、意大利、西班牙、加拿大。
這些統(tǒng)計(jì)還只是19年當(dāng)時(shí)的數(shù)據(jù)量,在我們發(fā)展迅速的今天,亞馬遜云科技,也隨著數(shù)據(jù)量的發(fā)展愈加強(qiáng)大。在中國,華米科技、九州通、嘉誼互娛、虎牙直播等各行業(yè)客戶,也正在使用亞馬遜云科技數(shù)據(jù)庫相關(guān)服務(wù)?;⒀乐辈ナ且患乙杂螒蛑辈楹诵臉I(yè)務(wù)的技術(shù)驅(qū)動(dòng)型內(nèi)容公司,旗下主要產(chǎn)品包括國內(nèi)知名游戲直播平臺虎牙直播、風(fēng)靡東南亞和南美的游戲直播平臺 NimoTV 等,前者月活躍用戶突破1.78億,后者月活用戶達(dá)到3,000萬。在鞏固擴(kuò)大業(yè)務(wù)市場、提升海內(nèi)外各地用戶體驗(yàn)過程中,虎牙使用 Amazon Aurora 替換傳統(tǒng) MySQL 實(shí)現(xiàn)數(shù)倍性能提升,通過 Amazon DynamoDB 自動(dòng)擴(kuò)容、輕松應(yīng)對10倍以上推送流量突增,利用 Amazon ElastiCache for Redis 實(shí)現(xiàn)內(nèi)存數(shù)據(jù)全球化,并使用 Amazon Neptune 標(biāo)定直播欺詐行為。
受歡迎的原因遠(yuǎn)不止這么多
亞馬遜云服務(wù)能夠這么受歡迎當(dāng)然不止這些,它還專門為開發(fā)者們打造了多種學(xué)習(xí)平臺:
- 入門資源中心:從0到1 輕松上手云服務(wù),內(nèi)容涵蓋:成本管理,上手訓(xùn)練,開發(fā)資源。??https://aws.amazon.com/cn/getting-started/??
- 架構(gòu)中心:亞馬遜云科技架構(gòu)中心提供了云平臺參考架構(gòu)圖表、經(jīng)過審查的架構(gòu)解決方案、Well-Architected 最佳實(shí)踐、模式、圖標(biāo)等。??https://aws.amazon.com/cn/architecture/??
- 構(gòu)建者庫:了解亞馬遜云科技如何構(gòu)建和運(yùn)營軟件。??https://aws.amazon.com/cn/builders-library/??
- 用于在亞馬遜云科技平臺上開發(fā)和管理應(yīng)用程序的工具包:??https://aws.amazon.com/cn/tools/??
降低門檻 讓更多人享受云計(jì)算。也是他們商業(yè)原則之一,亞馬遜云科技還秉持著一套「低價(jià)+巨量+微薄利潤」的商業(yè)邏輯。
福利一:100余種產(chǎn)品免費(fèi)套餐。其中,計(jì)算資源 Amazon EC2首年12個(gè)月免費(fèi),750小時(shí)/月;存儲資源 Amazon S3 首年12個(gè)月免費(fèi),5GB標(biāo)準(zhǔn)存儲容量。
??https://aws.amazon.com/cn/free/??
福利二:最新優(yōu)惠大禮包,200數(shù)據(jù)與分析抵扣券,200機(jī)器學(xué)習(xí)抵扣券,200$微服務(wù)與應(yīng)用開發(fā)抵扣券。
??https://www.amazonaws.cn/campaign/??
福利三:解決方案 CloudFormation 一鍵部署模版庫
??https://aws.amazon.com/cn/quickstart/??
從2006年上線起到2020年5月,亞馬遜云科技累積主動(dòng)降價(jià)82次。 一家優(yōu)秀的企業(yè)需要考慮的不僅僅是自己能從新技術(shù)中得到什么,還應(yīng)該讓別人從新技術(shù)中獲利。其實(shí)我們很難說用一篇兩篇文章來記錄亞馬遜云科技的巨大進(jìn)步和創(chuàng)新,但這種植根心底、一切從用戶出發(fā)的進(jìn)取精神卻給我留下了深刻印象:一個(gè)探路者的創(chuàng)新不息、領(lǐng)勢而行。
【專屬福利】
福利一:100余種產(chǎn)品免費(fèi)套餐。其中,計(jì)算資源 Amazon EC2首年12個(gè)月免費(fèi),750小時(shí)/月;存儲資源 Amazon S3 首年12個(gè)月免費(fèi),5GB標(biāo)準(zhǔn)存儲容量。
??https://aws.amazon.com/cn/free/??
福利二:最新優(yōu)惠大禮包,200數(shù)據(jù)與分析抵扣券,200機(jī)器學(xué)習(xí)抵扣券,200$微服務(wù)與應(yīng)用開發(fā)抵扣券。
??https://www.amazonaws.cn/campaign/??
福利三:解決方案 CloudFormation 一鍵部署模版庫
??https://aws.amazon.com/cn/quickstart/??
原文來自亞馬遜云科技開發(fā)者文章:
??https://dev.amazoncloud.cn/column/articleDetail?id=631ad7b55b411c3e2136fcc9??