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