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