引言:在2020年 Forrest Brazeal 發(fā)起的 #CloudMadnesss 投票中,S3 從25000張投票中脫穎而出,戰(zhàn)勝 Lambda 被評為最偉大的云產(chǎn)品。那么 S3 為什么能獲此殊榮,它到底有什么樣的影響力呢?
導(dǎo)讀:1、S3 的特點及應(yīng)用場景2、與 S3 如影隨形的內(nèi)容分發(fā)網(wǎng)絡(luò)3、被 S3 顛覆的大數(shù)據(jù)發(fā)行版4、S3 帶給世界的另一個驚喜 Lambda5、其他以 S3 為基礎(chǔ)的產(chǎn)品
1、S3 的特點及應(yīng)用場景
Amazon 早在2006年就推出了 Simple Storage Service(Amazon S3)服務(wù),一種對象存儲服務(wù),其具備行業(yè)領(lǐng)先的性能,無限擴展的容量,11個9的可用性,以及安全性。這在備份數(shù)據(jù)遷移還通過卡車托運的年代是極為稀缺的服務(wù)。
Amazon S3 的 架構(gòu)設(shè)計與編程語言無關(guān),使用 AWS 支持的 REST API 來存儲和檢索對象,此外AWS還提供各種語言的SDK,如Java、Python、.NET、iOS、Andriod等,以及示例代碼。
Amazon S3 采用按實際使用量計費的模型,應(yīng)用不需要考慮擴容的問題,只需要為實際使用的服務(wù)付費。
Amazon S3 提供適合不同場景的存儲服務(wù)。S3 Intelligent Tiering 在訪問模式發(fā)生變化時自動將數(shù)據(jù)遷移到更經(jīng)濟的訪問層來優(yōu)化存儲成本,而不需要操作開銷及對性能產(chǎn)生影響,每月只需要支付少量的對象監(jiān)控和自動化費用。S3 Intelligent Tiering 自動將對象存儲在三個訪問層,一個層針對頻繁訪問進行優(yōu)化,該層是默認訪問層;一個成本較低的層針對不頻繁訪問進行優(yōu)化,如連續(xù)30天未被訪問;另一個低成本層針對很少訪問的數(shù)據(jù)進行優(yōu)化,至少連續(xù)90天未被訪問(最大支持730天連續(xù)未訪問)。
Amazon S3 Glacier 提供更低成本的 S3 服務(wù),適用于數(shù)據(jù)存檔和長期備份??蛻艨梢詫?shù)據(jù)存儲幾個月、幾年、甚至數(shù)十年。
Amazon S3 的典型應(yīng)用場景如Web網(wǎng)站、應(yīng)用程序,存儲靜態(tài)和動態(tài)Web文件如Html、CSS、JS、Image、Audio、Video等,有位朋友總結(jié)了 “云原生王四條”,其中第一條就是將靜態(tài)資源存儲到對象存儲。
2、與 S3 如影隨形的內(nèi)容分發(fā)網(wǎng)絡(luò)
Amazon 通過 為 S3 提供加速服務(wù)進入內(nèi)容分發(fā)網(wǎng)絡(luò)市場,成為有利的市場競爭者,而內(nèi)容分發(fā)服務(wù)的競爭對手Cloudflare則開始拓展對象存儲市場,內(nèi)容分發(fā) 與 對象存儲已經(jīng)越來越密不可分。
早在2008年 Amazon 就發(fā)布了 CloudFront 內(nèi)容分發(fā)服務(wù),其用于加速靜態(tài)和動態(tài)Web內(nèi)容(如HTML、CSS、JS、Image、Audio、Video等)分發(fā)給用戶的速度,這些內(nèi)容大多是存儲在 S3,這就為 CloudFront 帶來了巨大的競爭優(yōu)勢。
CloudFront如何向用戶提供內(nèi)容呢?配置CloudFront 以加速內(nèi)容分發(fā)后,用戶請求您的資源時將會發(fā)生以下操作:1)用戶訪問您的網(wǎng)站或應(yīng)用程序,并發(fā)送對某個資源的請求,如HTML文件和圖片 ;2)DNS將請求轉(zhuǎn)發(fā)到響應(yīng)延遲最低的 CloudFront POP(邊緣站點),然后將請求路由到該邊緣站點;3)CloudFront檢查其緩存中是否有所請求的對象,如果對象在緩存中,CloudFront 將它返回給用戶,如果對象不在緩存中,則執(zhí)行以下操作:a. CloudFront 將請求轉(zhuǎn)發(fā)到源服務(wù)器,如轉(zhuǎn)發(fā)到 S3 對象存儲;b. 源服務(wù)器將對象返回到邊緣站點;c. CloudFront將對象轉(zhuǎn)發(fā)給用戶,并添加到本地緩存中,方便下次訪問;
Amazon CloudFront 與 S3 深度整合為用戶提供了操作的便利性,通過全球邊緣站點為全球用戶提供可靠、低延遲和高吞吐量的網(wǎng)絡(luò)連接。CloudFront 建立了一個超過310個節(jié)點(300個邊緣站點和13個區(qū)域性邊緣站點)的全球網(wǎng)絡(luò),覆蓋47個國家或地區(qū)的90多個城市,如下圖所示:
由于 S3 提供REST API接口,第三方競爭者也可以將其邊緣網(wǎng)絡(luò)與 Amazon S3 對接,用戶有更多的選擇,甚至可以在不同的地域使用不同的內(nèi)容分發(fā)網(wǎng)絡(luò),或同時使用多家內(nèi)容分發(fā)網(wǎng)絡(luò)。
2021年 Cloudflare 發(fā)布兼容 S3 API 的 R2 產(chǎn)品,其認為用戶為 S3 數(shù)據(jù)的訪問支付了昂貴的出口帶寬費用,該部分帶寬難以預(yù)測,R2 服務(wù)不再收取出口帶寬費用,存儲費用也比主流的提供商更便宜,每月每 GB 存儲的數(shù)據(jù)收費 0.015美元。
雖然以價格屠夫的角色切入對象存儲市場,但 R2 并沒有降低其服務(wù)可靠性,其計劃提供11個9的可靠性,如果在R2上存儲100萬個對象,你可以預(yù)期10萬年才可能丟失一個,與其他主要服務(wù)提供上的可靠性水平相同;R2還可以解決區(qū)域性故障,設(shè)計了跨大量區(qū)域的冗余以保證可靠性。
2022年5月,Cloudflare 宣布 R2 Beta 版開放公測,為開發(fā)者提供完全兼容S3 的 API 接口,支持TTL、公共存儲桶、預(yù)簽名URL、與Cloudflare Worker 集成等功能。
內(nèi)服分發(fā)對數(shù)字化應(yīng)用的客戶體驗至關(guān)重要,已經(jīng)成為互聯(lián)網(wǎng)不可或缺的服務(wù)之一,2021年 IDC預(yù)測未來5年 全球IDC市場規(guī)模的復(fù)合增長率17%,至2025年全球IDC規(guī)模將達到188億美元,主要參與者包括Akamai、Amazon、Cloudflare、Fastly、Alibaba等。
3、被 S3 顛覆掉的Hadoop發(fā)行版
Hadoop生態(tài)的三家公司Cloudera、MapR和Hortonworks過得并不好,而AWS Elastic MapReduce則成為Hadoop開源生態(tài)最大的贏家,基于 S3 的文件系統(tǒng)功不可沒。
2004年谷歌發(fā)表了三篇論文分別介紹了谷歌內(nèi)部的分布式文件系統(tǒng)GFS、分布式計算框架MapReduce和分布式結(jié)構(gòu)化存儲系統(tǒng)BigTable,Doug Cutting基于這三篇論文實現(xiàn)了開源的HDFS和MapReduce,2008年 Hadoop 成為Apache 頂級項目,進入快速發(fā)展階段,并誕生了三家Hadoop服務(wù)公司。
Cloudera 公司成立于2008年,他們在公司創(chuàng)立時就打算做服務(wù),類似于現(xiàn)在的AWS 的Elastic MapReduce,通過云給大家提供服務(wù),然而他們很快發(fā)現(xiàn)這個模式太超前,沒有大力投入,轉(zhuǎn)向了做Hadoop發(fā)行版的服務(wù)商,并于2009年9月,將 Hadoop 之父 Doug Cutting招入麾下。2014年 英特爾以7.5億美元領(lǐng)投了Cloudera融資,獲得18%的股權(quán),Cloudera的估值達到41億美元。
MapR 公司成立于2009年,其在發(fā)行版中將Hadoop文件系統(tǒng) HDFS 換成了自己私有的文件系統(tǒng),據(jù)說性能和穩(wěn)定性都得到極大提升;HBases受到HDFS文件系統(tǒng)的限制,性能一直不好,MapR在其私有文件系統(tǒng)中提供對HBase的支持;按 MapR 的說法,開源的東西只能湊合著用,MapR 的性能和穩(wěn)定性強得多。由于 MapR 發(fā)行版中存儲相關(guān)部分都重新實現(xiàn)了,產(chǎn)品與開源版本之間經(jīng)常有兼容性問題,客戶擔(dān)心用了 MapR 的發(fā)行版 就很難再換回 Cloudera 的發(fā)行版了。2016年,兩個創(chuàng)始人先后離開公司,2019年大規(guī)模裁員后,賣身惠普企業(yè)服務(wù)。
Hortonworks 是2011年從雅虎 Hadoop 團隊拆分出來的一家公司,雅虎一直是Hadoop源代碼的最大貢獻者,公司口號是“我們的東西100%是開源的”,但既然完全開源,其他公司很容易提供類似服務(wù),客戶為什么非要用Hortonworks呢?上市時Hortonworks大概10億美元,不到半年就腰斬一半只剩下5億美元,在2018年其與Cloudera達成合并協(xié)議。
2014年 Amazon 發(fā)布 Elastic MapReduce 產(chǎn)品 EMR,其實一個托管集群平臺,可以簡化在AWS上運行大數(shù)據(jù)框架的過程(如Apache Hadoop 和 Apache Spark),以處理和分析海量數(shù)據(jù)。EMR 可以讓用戶從數(shù)據(jù)庫(如DynamoDB)導(dǎo)出數(shù)據(jù),可以將數(shù)據(jù)導(dǎo)入到對象存儲(如 S3)。2016年,EMR 5.x版本發(fā)布,大部分Hadoop生態(tài)的開源產(chǎn)品都可以運行在S3上,基于 S3 的 EMRFS 提供了比 HDFS 低得多的成本,據(jù)DataBricks工程師評估 使用S3 代替 HDFS 資源成本可以節(jié)約 80%,如果考慮人工運維成本的話可以節(jié)約90%以上。EMR 相對傳統(tǒng)的方案獲得了更好的性能、更低的成本,讓 Amazon 成為Hadoop生態(tài)最大的受益者,更多的客戶將數(shù)據(jù)遷移到云端,并購買了更多的AWS的其他服務(wù),同時其他三大Hadoop發(fā)行商則難以賺到錢。
EMR 基于 Apache BigTop 的系統(tǒng)打包,這是 Hadoop 社區(qū)的發(fā)行版。
與Hadoop 生態(tài)競爭的還有另外一家公司DataBricks,其主導(dǎo)的Spark生態(tài)打敗了Hadoop的MapReduce,但DataBricks也發(fā)現(xiàn)其并不能通過賣Spark服務(wù)來賺到錢,用戶在大規(guī)模應(yīng)用下更愿意選擇低成本的 EMR 作為運行環(huán)境。2016年后DataBricks從擁抱開源到積極擁抱云服務(wù),依托云平臺建設(shè)其湖倉一體解決方案,在商業(yè)化方案中提供了更多差異化功能,從而在這場競爭中獲得了一席之地,2021年8月完成H輪融資16億美元,估值高達380億美元。DataBricks的數(shù)據(jù)湖產(chǎn)品Delta Lake是一個開放格式的數(shù)據(jù)存儲層,支持結(jié)構(gòu)化、半結(jié)構(gòu)化、非結(jié)構(gòu)化以及流數(shù)據(jù),利用云平臺的對象存儲服務(wù)提供統(tǒng)一的數(shù)據(jù)存儲服務(wù),極具性價比且具有很好的擴展性。
此外,以S3 的JuiceFS 為傳統(tǒng) Hadoop 解決方案遷移到云端提供另外一種選擇。DataBricks 的早期員工 劉洪清 2017年創(chuàng)立 JuiceData,旗下核心產(chǎn)品JuiceFS是專門為公有云設(shè)計的,可以在大規(guī)模服務(wù)集群中共享使用分布式POSIX文件系統(tǒng),利用公有云上類似S3的對象存儲,JuiceFS 為大數(shù)據(jù)存儲、備份、分析等場景服務(wù),可以將總體擁有成本降低到傳統(tǒng)解決方案的20%,這對Hadoop生態(tài)遷移上云的服務(wù)非常有吸引力。不過云服務(wù)商也提供了類似的分布式文件系統(tǒng),如AWS EFS,這是JuiceFS不得不面對的一個挑戰(zhàn)。
4、S3 帶給世界的另一個驚喜 Lambda
S3 是無服務(wù)器計算的縮影,AWS Lambda 產(chǎn)品實際上是作為 S3 的一部分啟動的。
2015年,Amazon 推出 AWS Lambda服務(wù),并引發(fā)業(yè)界對無服務(wù)器(Serverless)的廣泛關(guān)注。實際上,S3是無服務(wù)器計算的縮影,它解決了一個大家都需要解決的問題,有一個簡單的API,擁有近乎無限的容量,你只需要為實際使用的存儲空間及流量付費。而且它的性能不斷改善,不需要用戶做任何操作。Lambda的發(fā)明人 Tim Allen Wagner說:“Lambda實際上是作為 S3 的一部分啟動的,這是 S3 給世界帶來的另一個革命性的東西!”
AWS Lambda 是一項無服務(wù)器時間驅(qū)動的計算服務(wù),可以運行任何類型的應(yīng)用程序或后端服務(wù),而無需事先配置或管理服務(wù)器。AWS 有200多個服務(wù)都可以觸發(fā)Lambda應(yīng)用,如S3,用戶將圖片或視頻上傳到S3后實時觸發(fā)Lambda數(shù)據(jù)處理,對圖片進行裁減或?qū)σ曨l進行編解碼。
5、其他以 S3 為基礎(chǔ)的產(chǎn)品
過去幾年,數(shù)據(jù)產(chǎn)品出現(xiàn)一個明顯的趨勢:存儲和計算分離,計算層實現(xiàn)利用K8S或無服務(wù)器計算實現(xiàn)高度彈性,存儲層利用對象存儲的能力實現(xiàn)無限容量的存儲,并降低了存儲成本,本文以Thanos、Loki以及Neon為例進行說明。
# Thanos
Thanos 是一個高可用且支持長期存儲的Prometheus,用于大規(guī)模指標(biāo)監(jiān)控,其采用對象存儲 S3 提供簡單且低成本的長期存儲方案,2019年加入CNCF進行孵化。
Thanos包括幾個核心組件,如:
# Loki
Loki 是一個高可用且可水平擴展的日志系統(tǒng),受到Prometheus的設(shè)計理念所的影響,不對日志文本進行索引,僅通過一系列標(biāo)簽來過濾日志,將日志直接存儲在對象存儲 S3,從而實現(xiàn)了極具性價比的日志查詢方案。
Loki包括幾個核心組件,如:(1)Distributor:根據(jù)租戶ID和標(biāo)簽集的一致性Hashing結(jié)果將寫入的日志路由到Ingrester節(jié)點;(2)Ingrester:將日志寫入對象存儲持久保存,內(nèi)存中保留最近一段時間日志為Querier提供查詢;(3)Query Frontend:提供查詢接口,將較大的查詢拆分為較小的查詢放到隊列,由相應(yīng)的Querier執(zhí)行;(4)Querier:處理查詢結(jié)果,從Ingester 和 對象存儲中獲取日志;
# Neon
Neon是一個全托管的無服務(wù)器Postgres數(shù)據(jù)庫,其將計算和存儲分離,采用對象存儲作為持久存儲層,支持無限的存儲容量,還專門為開發(fā)人員提供了數(shù)據(jù)庫分支功能,開發(fā)人員可以在CI/CD管道中即時創(chuàng)建數(shù)據(jù)庫分支。目前該項目還處于封閉階段,團隊計劃在2022年底發(fā)布正式版本。
Neon包括幾個核心組件,如:(1)Safekeeper:PostgresSQL 將WAL寫入到Safekeeper,Safekeeper存儲WAL,直到Pageserver處理完成并將數(shù)據(jù)上傳到對象存儲;(2)Pageserver:負責(zé)處理讀請求,同時將WAL寫入特定的存儲,并上傳到對象存儲;
雖然解決的業(yè)務(wù)需求不同,這三個產(chǎn)品Thanos、Loki和Neon都采用了計算和存儲分離的架構(gòu),計算層實現(xiàn)無服務(wù)器部署,存儲層利用對象存儲的能力實現(xiàn)了無限容量的存儲,并降低了存儲成本。也許這些產(chǎn)品的應(yīng)用還不夠廣泛,或者還沒有完全成熟,不過他們的設(shè)計充分利用對象存儲的特點,讓產(chǎn)品極具成本優(yōu)勢。
不過對象存儲無法滿足低延遲,其并不適合對延遲敏感的OLTP事務(wù)型應(yīng)用場景。
本文是SaaS產(chǎn)品系列文章,對相關(guān)話題感興趣的同學(xué)可以關(guān)注后續(xù)更新。
推薦閱讀: 《DataBricks從開源到商業(yè)化踩過的坑》 《MarketPlace會成為2B軟件的App Store嗎?》
參考資料:
https://www.bvp.com/atlas/state-of-the-cloud-2022
https://tackle.io/resources/reports/state-of-cloud-marketplaces