互聯(lián)網(wǎng)大數(shù)據(jù)時代下亞馬遜是如何解決數(shù)據(jù)存儲的
在這個互聯(lián)網(wǎng)時代的背景下,新的電商平臺層出不窮。一提到亞馬遜平臺相信大家都不陌生,從虛擬到實體,從一開始的網(wǎng)絡書店,發(fā)展到互聯(lián)網(wǎng)行業(yè)的佼佼者。亞馬遜和亞馬遜云科技踐行可持續(xù)發(fā)展模式,為無數(shù)的企業(yè)提供了解決方案。 現(xiàn)如今數(shù)百萬的組織在亞馬遜云科技計算平臺上運行不同的工作負載,實現(xiàn)云上效率飛升和成本降低。
也正因為這樣,Gartner 魔力象限已經(jīng)連續(xù)第11年將亞馬遜云科技列為云基礎設施平臺,以及服務象限的領導者。

對于一個普通的消費者而言,亞馬遜是世界最大的網(wǎng)絡零售商,銷售額占到了美國服裝行業(yè)的1/3以上。對于跨境電商賣家來說,亞馬遜是一個高端且有高利潤的平臺。亞馬遜一點通的服務,則更是在一定程度上極大地便利了人們的生活。

那么大家有沒想過,亞馬遜平臺發(fā)展的這么好,為什么要涉及云計算,云服務呢?答案也很簡單,自己要用。
亞馬遜平臺的自我發(fā)展改革
亞馬遜云科技的母公司,也就是亞馬遜,本身就是世界上最大的電商平臺。而電商對基礎架構(gòu)的要求特別高,因此對云服務需求非常強烈。 這種需求一般都帶有四個特征。
- 電子商務是一種季節(jié)性很強的業(yè)務。黑五或者雙十一,電商網(wǎng)站的流量會暴漲,因此服務器必須可以彈性擴容,一防宕機,二防浪費。
- 電商平臺涉及大量商品SKU,各種商品信息和歷史交易信息都得找個地方存儲,所以需要大量的存儲空間。
- 電商是交易平臺,凡是和錢直接打交道的生意,必須穩(wěn)字當頭。所以底層架構(gòu)必須穩(wěn)定。
- 電商平臺上有很多第三方賣家,因此平臺的可擴展性和兼容性也很重要。
這些需求,那些主營賣廣告的門戶網(wǎng)站,賣軟件的IT公司,開發(fā)硬件的同行都不需要考慮,但對于亞馬遜這么一個飛速發(fā)展的電商平臺,屬于是卡脖子的問題,所以說,別人開發(fā)云服務是為了賺錢,亞馬遜是為了求生。但也正是在2006年涉及云服務后,在短短的十年間,它可以說乘著云服務趨勢改變了整個IT行業(yè)。
關于這句話,絕對不是空穴來風!

據(jù) Canalys 的分析師估計, Amazon 在云基礎設施即服務(IaaS)市場的份額達到33.8%,比它的三大勁敵微軟 Azure、谷歌 Google Cloud 和 IBM 的合計份額(30.8%)還要高。
從2006年邁出的一小步,推出 Amazon Web Services,以 Web 服務的形式向企業(yè)提供 IT 基礎設施服務。以一個簡單的數(shù)據(jù)中心機柜和幾臺電腦為出發(fā)點,開始思考和探索“如何讓計算變得像開燈一樣簡單”。 在這里,亞馬遜云科技開始構(gòu)建云的核心基礎架構(gòu)。通過將虛擬機和存儲服務提供給開發(fā)者,用戶不需要構(gòu)建自己的服務器,就可以獲取計算和存儲能力,并且可以像水電一樣隨取隨用。
到如今16年在云服務中走出了一大步,從云服務到云無處不在,從數(shù)據(jù)爆發(fā)到AI應用,云基礎架構(gòu)的創(chuàng)新從未停止。亞馬遜云基礎架構(gòu),在計算(Amazon Graviton 已經(jīng)從第一代演進到第三代,實現(xiàn)云底座重構(gòu),計算性能大幅提升, Amazon EC2向自動優(yōu)化、自動鏡像發(fā)展,加速云計算創(chuàng)新),存儲(極具廣度和深度的存儲選項:提供靈活部署方式,方便用戶管理數(shù)據(jù))網(wǎng)絡,安全,可持續(xù)發(fā)展,5大領域的創(chuàng)新成果,有目共睹。
云服務解決了那些實際問題
在五大創(chuàng)新領域中,存儲技術問題可能是電商平臺最注重的技術之一。就拿數(shù)據(jù)庫來講。1995年亞馬遜創(chuàng)立時,所有的邏輯只在一個單體應用里,也只有一個數(shù)據(jù)庫。
隨著業(yè)務的拓展,到了2001年,亞馬遜進入了面向服務架構(gòu)(SOA)階段,比如商品、訂單、服務等模塊都在那個時期形成。此后,亞馬遜進入到了更多的領域,產(chǎn)品迭代和客戶體驗迭代的速度越來越快,這些已經(jīng)按照SOA拆分出來的模塊,自己又會變成超大的單體。所以2002年開始到2006年,亞馬遜正式啟動了微服務化架構(gòu)。通過采用微服務、配合專門構(gòu)建的數(shù)據(jù)庫,企業(yè)可以擺脫傳統(tǒng)單一的數(shù)據(jù)庫在性能、功能、擴展性等方面的桎梏,有效提高創(chuàng)新速度,并且降低成本。
十多年來,亞馬遜云科技不斷加速數(shù)據(jù)庫相關服務落地,并針對不同應用場景需求推出了多種數(shù)據(jù)庫服務產(chǎn)品,為客戶提供兼具高性能、高可用性、可擴展及成本效益的專用數(shù)據(jù)庫服務,支撐客戶現(xiàn)代化應用的快速部署及創(chuàng)新。目前亞馬遜云科技可以提供十多種專門構(gòu)建的數(shù)據(jù)庫服務,支持關系、鍵值、文檔、內(nèi)存、圖、時間序列、寬列和分類賬八大數(shù)據(jù)類型。

亞馬遜云科技提供了100余種產(chǎn)品免費套餐。其中,計算資源Amazon EC2首年12個月免費,750小時/月;存儲資源 Amazon S3 首年12個月免費,5GB標準存儲容量。
??https://aws.amazon.com/cn/free/??
不僅價格優(yōu)惠活動力度大,專為云平臺打造的關系型數(shù)據(jù)庫 Amazon Aurora 也是目前亞馬遜云科技歷史上用戶數(shù)量增速最快的云服務。
Amazon Aurora 云數(shù)據(jù)庫

由于 Aurora 是為了代替 MySQL,而 MySQL 用于關系型數(shù)據(jù)庫,所以 Aurora 僅負責處理關系型數(shù)據(jù)庫的服務,即 RDS(Relational Database Service)。我們其實可以從圖中看出相當多的信息,Aurora 僅有 Primary RW(Read/Write) DB一個主節(jié)點用于處理寫請求,而其余的則為從節(jié)點 Secondary RO(Read-Only) DB用于處理讀請求,論文中指出 Secondary RO DB(也就是只讀副本)可以多達15個。另外,每個 Aurora 配備六個存儲節(jié)點,它們分布于區(qū)域中的三個可用區(qū)中,提供優(yōu)異的數(shù)據(jù)持久性和可用性。其中有兩個節(jié)點使用 Amazon Simple Storage Service(S3)存儲技術進行備份,而剩余4個節(jié)點則直接存儲在本地的 SSD 上。
用戶的應用通過 Customer VPC 接入,然后可以讀寫位于不同 AZ(Availability Zone)的數(shù)據(jù)庫。而不同的 AZ 分布于全球的不同的Region中。當用戶的請求發(fā)送到 Primary RW DB 時,RDS HM(Host Manager)會檢測到請求,并調(diào)用Aurora 進行相應的操作。如果是寫操作,則將相關信息發(fā)送給 Secondary RO DB進行備份,同時將命令寫入存儲節(jié)點。如果是讀操作,則直接從存儲節(jié)點讀取數(shù)據(jù)返回。
使用傳統(tǒng) MySQL 遇到的性能問題
Amazon 在日常開發(fā)和維護中發(fā)現(xiàn),計算能力和存儲性能已經(jīng)不再是其工作的瓶頸了,取而代之的是網(wǎng)絡的流量。其實對于 Amazon 來說,只要有錢,CPU 能用最好的就能解決計算能力的問題,機械硬盤不夠用固態(tài)硬盤,固態(tài)硬盤不夠就上內(nèi)存,存儲性能也解決了,但是網(wǎng)絡的延遲靠大帶寬是很難解決的,而拉近機房位置也是有上限的,必須要從業(yè)務邏輯和服務組件上找問題。所以他們發(fā)現(xiàn)了 MySQL 在分布式系統(tǒng)中消耗了大量的流量,還提高了延遲。具體如下圖所示。

從圖中我們可以看出,傳統(tǒng)的 MySQL 如果想要執(zhí)行一次寫入操作必須經(jīng)歷以下幾步:
- 主節(jié)點將數(shù)據(jù)寫入 EBS1
- EBS1 將數(shù)據(jù)寫入備份鏡像 EBS2
- 主節(jié)點將相關數(shù)據(jù)發(fā)送給從節(jié)點
- 從節(jié)點將數(shù)據(jù)寫入 EBS3
- EBS3 將數(shù)據(jù)寫入 EBS4
其中,第1,3,5步是串行的,也就是說,只有第1步完成了,才能執(zhí)行第3步,第3步完成了才能執(zhí)行第5步。這無疑增加了服務器返回數(shù)據(jù)的延遲。另外傳統(tǒng)的 MySQL 在寫入和傳輸數(shù)據(jù)時還需要很多的額外信息,這又增加了網(wǎng)絡帶寬的消耗。也就是說,MySQL 的使用在分布式系統(tǒng)產(chǎn)生了兩個問題。
- 應答延遲太高
- 消耗網(wǎng)絡帶寬太多
所以當 Amazon 發(fā)現(xiàn)使用傳統(tǒng) MySQL 的弊端之后,決定設計新的組件來代替 MySQL 以解決上述兩個問題。
組件1:The Log Is The Database
針對 MySQL 在同步數(shù)據(jù)的過程中發(fā)送的信息太多,這該怎么辦呢?Amazon 也算是家大業(yè)大,直接自己重新設計標準,以往的數(shù)據(jù)庫是真的數(shù)據(jù)庫,現(xiàn)在他們用WAL也就是 Log 來整合所有有用的信息并刪去無用的信息,既減少了數(shù)據(jù)傳輸量又保證了需要保留的信息。同時,他們使用了鏈式復制結(jié)構(gòu)代替主從結(jié)構(gòu),簡化了保證數(shù)據(jù)一致性的復雜度。具體架構(gòu)如下圖所示。

以三個副本為例,當位于AZ1的主節(jié)點收到寫請求后,它將請求的相關數(shù)據(jù)直接寫入六個存儲節(jié)點中,然后,將數(shù)據(jù)和一些額外的信息通過鏈式復制結(jié)構(gòu)傳遞給位于 AZ2和 AZ3其他節(jié)點。和上圖進行對比,明顯可以看到主從節(jié)點之間網(wǎng)絡通信中傳輸?shù)臄?shù)據(jù)減少了,主節(jié)點向存儲節(jié)點寫入數(shù)據(jù)時也從五種數(shù)據(jù)變?yōu)橐环N。這里要特別指出的是,此處的數(shù)據(jù)已經(jīng)從 MySQ 定義的 Log 變?yōu)?Amazon 為 Aurora 量身定制的 Log。由于需要傳輸數(shù)據(jù)量的減少,同步所消耗的網(wǎng)絡帶寬也大幅地減少了。
另外,因為主節(jié)點負責將 Log 寫入存儲節(jié)點,而從節(jié)點僅存儲 Log 不需要負責寫入存儲節(jié)點,這樣就減少了在 MySQL 中額外的第四步和第五步操作的時間。而 MySQL 中的兩級EBS存儲操作也由一級 Quorum 的代替,就像上一篇文章提到的,兩級存儲的時間是兩次操作的時間之和,而一級的 Quorum 操作的時間則是取決于 Quorum 中最長的應答時間。這樣, Aurora 也優(yōu)化了應答延遲的時間。
組件2:Storage Node
上面,我們提到主節(jié)點將 Redo Log 寫入存儲節(jié)點。但是,此時 Redo Log 還未執(zhí)行,需要在存儲節(jié)點中執(zhí)行相應的操作后才算真正完成。下面,我們再來看看 Redo Log 到達存儲節(jié)點以后需要進行哪些操作。論文中給出的流程圖如下。

具體的流程解釋如下
- 存儲節(jié)點通過 Incoming Queue 接受主節(jié)點的 Log。
- 存儲節(jié)點將 Log 存到本地硬盤后向主節(jié)點發(fā)送 ACK,用以確認 Quorum。
- 由于網(wǎng)絡的不可靠和 Quorum 機制,當前存儲節(jié)點可能缺失了部分Log。在這一步,它將 Log 排序并找出缺失的 Log。
- 通過和其他存儲節(jié)點進行交換信息,將缺失的 Log 復制到本地,將所有 Log 填充完整。
- 到目前為止,系統(tǒng)中存儲的仍是 Log 而非用戶需要數(shù)據(jù),這一步執(zhí)行 Log 對應的操作,并寫入數(shù)據(jù)庫中。
- 定期地將數(shù)據(jù)存為快照并存入 Amazon S3中。
- 定期地進行垃圾收集,刪除過期數(shù)據(jù)。
- 用 CRC 定期檢驗數(shù)據(jù)。
從流程中我們可以看到,只有第一步和第二步可能影響應答延遲,其余的步驟都由存儲節(jié)點在后臺執(zhí)行。這樣一來,因為無需等待執(zhí)行完畢,應答延遲就進一步降低了。Amazon Aurora 描述的技術看起似乎很通用,使用 WAL 代替 MySQL 的信息,在存儲節(jié)點執(zhí)行命令而不是在本機執(zhí)行,使用 Chain Replication 等等。 但是能將這些技術恰到好處地使用在實際的系統(tǒng)中,并進行優(yōu)化才是大廠的技術底蘊。 這里講的恐怕只算是對 Aurora 的驚鴻一瞥,真的想了解實現(xiàn)細節(jié)還得去 Amazon 內(nèi)部看看。
用數(shù)據(jù)來說明它的性能
官網(wǎng)對 Amazon Aurora 的性能是這樣描述的:吞吐量最高可以達到標準 MySQL 的 5 倍、標準 PostgreSQL 的 3 倍。這些平淡的文字可能無法引起你的共鳴,下面給大家看一組亞馬遜近些年來的統(tǒng)計數(shù)據(jù),來看看通過自身研發(fā)的技術能應對多少數(shù)據(jù)量。
亞馬遜活躍賣家

截止到2019年12月31日,亞馬遜全站點約有800多萬的賣家,其中有293萬的活躍賣家,也就是有293萬的賣家當前有商品在售。上圖左邊兩列數(shù)據(jù),是根據(jù)活躍賣家的數(shù)量將這16個站點劃分為了三個梯隊。第一個梯隊是美國站,活躍賣家數(shù)量超過了100萬,占比38%;第二梯隊是以英國為首的歐洲五站以及印度、日本和加拿大,活躍賣家數(shù)都在15萬到30萬之間;第三梯隊是墨西哥到新加坡,活躍賣家數(shù)在5萬及5萬以下,去年新開的3個站點都在這個梯隊。右邊兩列的數(shù)據(jù),是活躍賣家的增長數(shù)量。排名前三的站點分別是巴西、墨西哥和西班牙。亞馬遜2019年10月11日接受美國司法制裁時透露:美國站有89.8萬的賣家,其中有38.4萬的個人賣家和51.4萬的企業(yè)賣家,個人賣家約占40%。這個數(shù)據(jù)表明,在亞馬遜的美國站,個人賣家非常活躍。
日訪問次數(shù)

接著,是亞馬遜各站點的日訪問人次,也就是流量情況。我們統(tǒng)計了其中8個賣家比較關心的站點,分別是美國、日本、加拿大和歐洲五站。它們按照日訪問人次的多少排序,依次是美國、日本、德國、英國、法國、意大利、西班牙、加拿大。
這些統(tǒng)計還只是19年當時的數(shù)據(jù)量,在我們發(fā)展迅速的今天,亞馬遜云科技,也隨著數(shù)據(jù)量的發(fā)展愈加強大。在中國,華米科技、九州通、嘉誼互娛、虎牙直播等各行業(yè)客戶,也正在使用亞馬遜云科技數(shù)據(jù)庫相關服務。虎牙直播是一家以游戲直播為核心業(yè)務的技術驅(qū)動型內(nèi)容公司,旗下主要產(chǎn)品包括國內(nèi)知名游戲直播平臺虎牙直播、風靡東南亞和南美的游戲直播平臺 NimoTV 等,前者月活躍用戶突破1.78億,后者月活用戶達到3,000萬。在鞏固擴大業(yè)務市場、提升海內(nèi)外各地用戶體驗過程中,虎牙使用 Amazon Aurora 替換傳統(tǒng) MySQL 實現(xiàn)數(shù)倍性能提升,通過 Amazon DynamoDB 自動擴容、輕松應對10倍以上推送流量突增,利用 Amazon ElastiCache for Redis 實現(xiàn)內(nèi)存數(shù)據(jù)全球化,并使用 Amazon Neptune 標定直播欺詐行為。
受歡迎的原因遠不止這么多
亞馬遜云服務能夠這么受歡迎當然不止這些,它還專門為開發(fā)者們打造了多種學習平臺:
- 入門資源中心:從0到1 輕松上手云服務,內(nèi)容涵蓋:成本管理,上手訓練,開發(fā)資源。??https://aws.amazon.com/cn/getting-started/??
- 架構(gòu)中心:亞馬遜云科技架構(gòu)中心提供了云平臺參考架構(gòu)圖表、經(jīng)過審查的架構(gòu)解決方案、Well-Architected 最佳實踐、模式、圖標等。??https://aws.amazon.com/cn/architecture/??
- 構(gòu)建者庫:了解亞馬遜云科技如何構(gòu)建和運營軟件。??https://aws.amazon.com/cn/builders-library/??
- 用于在亞馬遜云科技平臺上開發(fā)和管理應用程序的工具包:??https://aws.amazon.com/cn/tools/??
降低門檻 讓更多人享受云計算。也是他們商業(yè)原則之一,亞馬遜云科技還秉持著一套「低價+巨量+微薄利潤」的商業(yè)邏輯。
福利一:100余種產(chǎn)品免費套餐。其中,計算資源 Amazon EC2首年12個月免費,750小時/月;存儲資源 Amazon S3 首年12個月免費,5GB標準存儲容量。
??https://aws.amazon.com/cn/free/??
福利二:最新優(yōu)惠大禮包,200數(shù)據(jù)與分析抵扣券,200機器學習抵扣券,200$微服務與應用開發(fā)抵扣券。
??https://www.amazonaws.cn/campaign/??
福利三:解決方案 CloudFormation 一鍵部署模版庫
??https://aws.amazon.com/cn/quickstart/??
從2006年上線起到2020年5月,亞馬遜云科技累積主動降價82次。 一家優(yōu)秀的企業(yè)需要考慮的不僅僅是自己能從新技術中得到什么,還應該讓別人從新技術中獲利。其實我們很難說用一篇兩篇文章來記錄亞馬遜云科技的巨大進步和創(chuàng)新,但這種植根心底、一切從用戶出發(fā)的進取精神卻給我留下了深刻印象:一個探路者的創(chuàng)新不息、領勢而行。
【專屬福利】
福利一:100余種產(chǎn)品免費套餐。其中,計算資源 Amazon EC2首年12個月免費,750小時/月;存儲資源 Amazon S3 首年12個月免費,5GB標準存儲容量。
??https://aws.amazon.com/cn/free/??
福利二:最新優(yōu)惠大禮包,200數(shù)據(jù)與分析抵扣券,200機器學習抵扣券,200$微服務與應用開發(fā)抵扣券。
??https://www.amazonaws.cn/campaign/??
福利三:解決方案 CloudFormation 一鍵部署模版庫
??https://aws.amazon.com/cn/quickstart/??
原文來自亞馬遜云科技開發(fā)者文章:
??https://dev.amazoncloud.cn/column/articleDetail?id=631ad7b55b411c3e2136fcc9??





















