天天看點

從17周年的Amazon S3邁向Serverless

作者:雲體驗師

網際網路時代,對象存儲是最合适的資料存儲方式,當網際網路技術高速發展的同時,圍繞對象存儲的技術創新也如雨後春筍般湧現。

雲計算時代,對象存儲既是很多企業上雲的開始,也是很多企業探索雲服務更進階用法的必經之路。

比如,作為公有雲領頭羊亞馬遜雲科技的第一款雲服務,Amazon S3正在引導更多使用者走向Serverless,并且,還在用各種新功能特性簡化中間過程。

Amazon S3:十七年,創新不斷

從17周年的Amazon S3邁向Serverless

2006年3月14日,亞馬遜雲科技釋出了對象存儲服務Amazon S3,它允許使用者建立、羅列、删除桶(Bucket),自由上傳和下載下傳檔案,用REST和SOAP的方式靈活通路資料。

如今的Amazon S3服務于數不清的使用者。截止到2023年, Amazon S3上存放着280萬億個對象,平均每秒要響應1億多個請求。為了保證資料的完整性,每秒需要執行40億次校驗計算。

2023年3月14日是Amazon S3的17周年紀念日,為了紀念第一款雲服務的誕生,亞馬遜雲科技将這一天稱作Pi Day,每年都會舉辦一次線上活動。

17年一路走來,Amazon S3創新不斷,常看常新。作為最早的雲服務産品,近幾年來可圈可點的新内容反而更多。

從17周年的Amazon S3邁向Serverless

比如,在上圖中圈重點的有S3 Batch Replication、新的校驗算法、S3多區域接入點故障切換控制等,圖中沒提到的,還有數不清的小的動态。

這些大大小小的更新,有的圍繞Amazon S3本身,還有很多,都在幫使用者打通邁向Serverless的高速路。

Amazon S3:不隻是對象存儲

将Amazon S3視為一種存儲服務來用,它可以簡約到有些簡陋。因為,S3為使用者屏蔽了背後的複雜性,比如,安全和權限管理,持久性設計,成本優化,通路性能優化等等諸多方面。

然而,使用Amazon S3的使用者,所能獲得的價值遠不止是一套對象存儲。

用了Amazon S3,使用者享受到的是不斷縮減成本的預期。比如,Amazon S3的存儲層有很多,單單是智能分層技術已為使用者節省了10億美元;

用了Amazon S3,使用者能基于它建構資料湖,利用大資料和機器學習技術産出價值。據了解,Amazon S3已支撐了數十萬的資料湖,它聯通了資料價值;

用了Amazon S3,使用者能便捷地享受到Serverless應用生态、雲原生技術架構的優勢,進而更好地降本增效,更靈活地滿足業務需求;

曾有分析人士認為,亞馬遜雲科技産品間的融合程度非常高,每一個新服務釋出的時候,與很多原有服務都能直接關聯互通。

Amazon S3就好像是配套基礎設施完善的居民樓,當住戶輕松享受到購物、醫療、教育、交通、水、電等便利條件時,一套住宅能為使用者帶來的就不隻是居住價值,而是更好的生活。

對于Amazon S3來說,Serverless應用就是非常重要的配套服務之一。

Amazon S3:Serverless應用的關鍵元件

在2023分布式存儲高峰論壇上,亞馬遜雲科技解決方案架構師經理郭立,介紹了如何把公有雲存儲Amazon S3用于Serverless應用的話題。

郭立介紹稱,Amazon S3是Serverless應用程式環境的關鍵元件。并且,事件通知是Amazon S3的重要功能特性,Amazon S3每天都會向Serverless應用發送1310億條事件通知。

從17周年的Amazon S3邁向Serverless

看到這裡就應該意識到,Amazon S3的事件通知非常重要。

其實,當一個對象被上傳和删除時,都會快速對外發送通知。通知的目的地可以是Amazon SQS、Amazon SNS,也可以是Amazon Lambda。接到通知後,就可以執行具體的任務了。

比如,上傳一個英文文檔後,Amazon S3發出一個通知給到Amazon Lambda,Amazon Lambda調用Amazon Translate來做翻譯,翻譯完成後依次傳回給Amazon S3。

三種雲服務的配合之下,就能完成近實時的翻譯工作。

如果翻譯的工作量非常大,此時就需要額外借助消息隊列Amazon SQS(另外一項步入第17年的服務)的力量了,将需要翻譯的檔案放到消息隊列裡逐個進行翻譯,翻譯完成的檔案再逐個放回Amazon S3。

然而,并不是所有資料都需要翻譯。比如,有的文檔本來就是中文的,就完全不需要英譯中了。至于是不是中文,這就需要進行一個條件判斷了。

此時,使用者可以借助Amazon Step Functions來做判斷,如果滿足某條件就執行A,不滿足條件就執行B。實際工作中,大型企業複雜的流程可以用Amazon Step Functions來做梳理。

當然,利用Amazon Step Functions來做梳理,就意味着使用者的業務邏輯會和亞馬遜雲服務産生非常緊密的耦合,使得使用者用非常少的代碼完成業務流程的自動化。

對于大型企業來說,面對更大的業務量,更嚴肅的業務場景時,對代碼水準要求更高。此時,使用者定義的代碼越少,更多地利用Serverless的功能,系統本身的健壯性就越強。

從Amazon S3邁向Serverless,已經越來越容易了

上文中,從Amazon S3開始,一步步用到Amazon Lambda、Amazon SQS以及Amazon StepFunctions,雖然都是Serverless服務,但放在一起也都會讓架構變得越來越複雜。

從17周年的Amazon S3邁向Serverless

為了簡化Serverless架構,亞馬遜雲科技也準備了很多功能。比如,2019年,亞馬遜雲科技釋出了Amazon EventBridge。

從17周年的Amazon S3邁向Serverless

Amazon EventBridge是一種Serverless事件總線,它可以把來自包括Amazon S3在内的多個來源的通知,路由到包括Amazon Lambda以及Amazon SQS之類的目的地。

如上圖所見,當Amazon S3與Amazon EventBridge搭配使用,Amazon EventBridge連接配接通知的生産者和消費者,這會讓無Serverless架構變得更簡潔。

在足夠簡潔的架構的基礎上,使用者可以更輕松地定義業務代碼。

很多朋友會注意到,上面提到的幾個場景都是使用者上傳了一個對象到之後觸發的操作。其實,一個對象的生命周期裡,上傳的操作隻有一次,日常有大機率還要被調用很多次。

那麼,在對象被頻繁調用時要如何用Serverless來處理業務邏輯呢?

2021年3月,亞馬遜雲科技釋出Amazon S3 Object Lambda,它解決的就是對象被Get、Head、List指令調用時如何觸發Serverless進行業務處理的問題。

從17周年的Amazon S3邁向Serverless

比如,一張圖檔以1080P的分辨率存在Amazon S3上,但應用需要的是720P分辨率。程式調用時,先由Amazon S3 Object Lambda轉換分辨率,最後,将720P的圖檔傳回給應用程式。

如此以來,Amazon S3 Object Lambda承擔了一部分原來需要應用程式做的工作,也可以看做是延展了Amazon S3的功能。

可以說,Amazon S3 Object Lambda的出現,它能幫使用者從Amazon S3邁向Serverless步驟變得更容易。

結束語

将處理過程交由Amazon S3 Object Lambda這種Serverless服務的優勢很明顯,最大的優勢就是能高效穩定地處理大量業務。

這是因為,Serverless是将計算帶入到了資料一側,當有大量資料需要處理時,Serverless可以自動擴充以快速完成計算過程,是以,它的處理效率更高。

充分利用Serverless的特點,在面對大量業務需求時,整套業務系統的性能和穩定性也會更高,随着雲計算的發展,随着使用者用雲的程度不斷加深,Serverless會用的越來越多。