你好,歡迎來到川北在線
微信
騰訊微博
新浪微博
亞馬遜云科技的Amazon Lambda結(jié)合了Serverless和EDA,是一項(xiàng)Serverless事件驅(qū)動型計(jì)算
時(shí)間:2023-07-18 17:51   來源:今日頭條   責(zé)任編輯:青青

  原標(biāo)題:亞馬遜云科技的Amazon Lambda結(jié)合了Serverless和EDA,是一項(xiàng)Serverless事件驅(qū)動型計(jì)算服務(wù)

  近年來,云計(jì)算和微服務(wù)架構(gòu)的流行使得許多公司開始將應(yīng)用程序部署到云上。在這個過程中,一些新的技術(shù)和概念也隨之而來,比如MAD(現(xiàn)代化應(yīng)用)架構(gòu)。MAD架構(gòu)的主要目的是讓企業(yè)能夠更好地利用云計(jì)算和微服務(wù)架構(gòu)來構(gòu)建靈活、高效、可擴(kuò)展的應(yīng)用程序。

  在介紹MAD架構(gòu)之前,先回顧一下最近十年應(yīng)用部署架構(gòu)的演進(jìn)。

  假設(shè)現(xiàn)在有一個任務(wù)需求,需要將用戶上傳到mp4文件轉(zhuǎn)換為WMV格式再存儲到數(shù)據(jù)中。

  單體架構(gòu)

  如果使用最早的單體架構(gòu)部署,作為最傳統(tǒng)的應(yīng)用部署模式,是將整個應(yīng)用程序作為一個單一的、緊密耦合的單元進(jìn)行開發(fā)和部署。

  在這種情況下,MP4文件轉(zhuǎn)換為WMV格式的功能將作為應(yīng)用程序的一部分實(shí)現(xiàn)。整個應(yīng)用程序在一個部署單元中運(yùn)行,包括處理用戶界面、業(yè)務(wù)邏輯和數(shù)據(jù)訪問等功能。

  遇到問題

  使用這種模式,問題非常明顯,雖然部署簡單,但會導(dǎo)致代碼和功能之間的緊密耦合,遇到局部bug會影響整個應(yīng)用功能運(yùn)行,可伸縮性受限,整個應(yīng)用程序需要按照 負(fù)載需求進(jìn)行伸縮,而不僅僅是轉(zhuǎn)換文件的功能。這可能導(dǎo)致資源浪費(fèi)和低效的資源利用,另外也會存在單點(diǎn)故障問題,如果應(yīng)用程序的某個組件出現(xiàn)故障,整個應(yīng)用程序都會受到影響。

  在單體架構(gòu)中,所有的功能模塊都被打包在一起,共享同一個數(shù)據(jù)庫和用戶界面。單體架構(gòu)在早期的軟件開發(fā)中非常常見,因?yàn)樗唵巍⒁子诶斫夂蛯?shí)現(xiàn),但受限于可擴(kuò)展、可維護(hù)性、高可用性等問題,單體架構(gòu)逐漸被時(shí)代淘汰。

  容器技術(shù)/微服務(wù)

  為了解決單體架構(gòu)存在問題,容器技術(shù)孕育而生,直至docker容器技術(shù)出現(xiàn),行業(yè)改變了以往的架構(gòu)模式。

  從過去以物理機(jī)和虛擬機(jī)為主體的開發(fā)運(yùn)維環(huán)境,向以容器為核心的基礎(chǔ)設(shè)施的轉(zhuǎn)變過程,這并不是一次溫和的改革,而是涵蓋了對網(wǎng)絡(luò)、存儲、調(diào)度、操作系統(tǒng)、分布式原理等各個方面的容器化理解和改造。

  容器技術(shù)發(fā)展徹底釋放了微服務(wù)天性,在單體架構(gòu)部署存在的問題,在微服務(wù)架構(gòu)中,應(yīng)用程序被拆分為多個小型、獨(dú)立部署的服務(wù),每個服務(wù)專注于一個特定的功能。對于MP4文件轉(zhuǎn)換為WMV格式的過程,可以將其作為一個單獨(dú)的轉(zhuǎn)換服務(wù)實(shí)現(xiàn),甚至可以根據(jù)轉(zhuǎn)換過程進(jìn)一步拆分,實(shí)現(xiàn)更精細(xì)化管理,每個服務(wù)可以獨(dú)立部署和伸縮,提供更好的靈活性和可擴(kuò)展性,服務(wù)之間都是獨(dú)立的,可以獨(dú)立開發(fā)、測試、擴(kuò)展和部署。

  遇到問題

  隨之而來地系統(tǒng)復(fù)雜性增加,微服務(wù)架構(gòu)引入了分布式系統(tǒng)的復(fù)雜性,包括服務(wù)之間的通信、數(shù)據(jù)一致性和故障處理等方面。

  部署和管理成本增加,管理多個服務(wù)的部署和運(yùn)維需要更多的工作和資源。

  企業(yè)需求

  對于企業(yè),如果希望既要實(shí)現(xiàn)高效、可伸縮、高可用等功能,同時(shí)提高團(tuán)隊(duì)人員效率,開發(fā)者可以專注于編寫業(yè)務(wù)邏輯,而無需擔(dān)心服務(wù)器的配置、擴(kuò)展或管理。

  還是之前“MP4文件轉(zhuǎn)換為WMV格式存儲到數(shù)據(jù)”例子中,如何實(shí)現(xiàn)開發(fā)者可以專注于編寫業(yè)務(wù)邏輯,而無需擔(dān)心服務(wù)器的配置、擴(kuò)展或管理問題?

  可以通過兩個步驟來了解:

  1、Serverless服務(wù)

  2、事件驅(qū)動架構(gòu)(EDA)

  Serverless在基礎(chǔ)設(shè)施端解決運(yùn)維困擾

  在Serverless計(jì)算服務(wù)中,開發(fā)人員只需關(guān)注應(yīng)用程序的業(yè)務(wù)邏輯,云服務(wù)提供商將負(fù)責(zé)管理和調(diào)配計(jì)算資源,平臺根據(jù)需求自動擴(kuò)展計(jì)算資源,以適應(yīng)變化的工作負(fù)載,同時(shí)按使用付費(fèi),根據(jù)實(shí)際使用的計(jì)算資源付費(fèi),避免了長期維護(hù)和不必要的成本。

  EDA讓開發(fā)者可以專注于編寫業(yè)務(wù)邏輯使用事件驅(qū)動架構(gòu)

  使用EDA架構(gòu)來實(shí)現(xiàn)將MP4文件轉(zhuǎn)換為WMV格式的過程可以提供一種高度可擴(kuò)展和靈活的方式。

  1、事件源:

  事件源是用戶上傳的MP4文件,上傳成功后存儲在云存儲服務(wù)(如Amazon S3)中。當(dāng)有新的MP4文件上傳時(shí),Amazon S3會發(fā)送一個事件通知。

  2、事件觸發(fā)器:

  創(chuàng)建一個事件觸發(fā)器,以捕獲Amazon S3的事件通知,并將其轉(zhuǎn)化為事件。這可以通過使用Amazon S3的事件通知功能,或者使用專門的觸發(fā)器服務(wù)來實(shí)現(xiàn)。

  3、事件總線:

  搭建一個事件總線(如消息隊(duì)列或事件流服務(wù)),用于接收和傳遞事件。事件總線可以作為中心樞紐,接收來自不同事件觸發(fā)器的事件。

  4、事件處理程序:

  編寫事件處理程序,可以使用云函數(shù)(如Amazon Lambda)或自己搭建的應(yīng)用程序來處理事件。事件處理程序?qū)⒔邮盏降氖录鳛橛|發(fā)器,執(zhí)行MP4文件轉(zhuǎn)換為WMV格式的操作。

  5、MP4轉(zhuǎn)換為WMV:

  在事件處理程序中,使用適當(dāng)?shù)墓ぞ呋蚍⻊?wù)(如FFmpeg)來執(zhí)行MP4文件轉(zhuǎn)換為WMV格式的任務(wù)。通過編寫代碼來提取上傳的MP4文件,使用合適的轉(zhuǎn)換命令和參數(shù)將其轉(zhuǎn)換為WMV格式。

  6、結(jié)果處理:

  一旦MP4轉(zhuǎn)換為WMV完成,將轉(zhuǎn)換后的文件存儲云存儲服務(wù)(如Amazon S3)中。根據(jù)需求,還可以將轉(zhuǎn)換結(jié)果通知相關(guān)方(如用戶、運(yùn)維管理員),還可以將其集成到其他應(yīng)用程序中。

  通過以上的架構(gòu),當(dāng)用戶上傳MP4文件到指定的存儲桶時(shí),Amazon S3會發(fā)送事件通知到事件觸發(fā)器。事件觸發(fā)器將通知轉(zhuǎn)換為事件并發(fā)送到事件總線。事件總線將事件分發(fā)給相應(yīng)的事件處理程序,觸發(fā)MP4到WMV格式轉(zhuǎn)換的任務(wù)。事件處理程序處理完任務(wù)后,將轉(zhuǎn)換后的文件存儲在適當(dāng)?shù)奈恢,并可以通過適當(dāng)?shù)姆绞酵ㄖ嚓P(guān)方。

  通過EDA架構(gòu),每個事件模塊有自己的處理?xiàng)l件和界限,同時(shí)提供可擴(kuò)展性和彈性,并且允許在需要時(shí)添加更多的事件處理程序來處理多個轉(zhuǎn)換任務(wù)。還可以與其他服務(wù)和組件進(jìn)行集成(例如:日志監(jiān)控等),以實(shí)現(xiàn)更復(fù)雜的工作流程和自定義邏輯。

  Amazon Lambda

  Serverless和事件驅(qū)動架構(gòu)(EDA)是現(xiàn)代應(yīng)用開發(fā)中的兩個重要概念,在所有廠商中,亞馬遜云科技算是排在行業(yè)前茅,它們的Amazon Lambda結(jié)合了Serverless和EDA,是一項(xiàng)Serverless事件驅(qū)動型計(jì)算服務(wù),可以從200多個Amazon服務(wù)和軟件即服務(wù)(SaaS)應(yīng)用程序中觸發(fā)Amazon Lambda,且只需按 到毫秒級別的使用量付費(fèi)。例如:

  01/文件處理

  使用Amazon S3在上傳后實(shí)時(shí)觸發(fā)Amazon Lambda數(shù)據(jù)處理,或連接到現(xiàn)有的Amazon EFS文件系統(tǒng),從而為大規(guī)模文件處理啟用大規(guī)模并行共享訪問。

  根據(jù)需要,設(shè)置合適的Amazon Lambda內(nèi)存執(zhí)行代碼,Amazon Lambda實(shí)例數(shù)自動擴(kuò)展以匹配請求量,并啟用自定義事件觸發(fā)器。

  02/流處理

  通過Serverless流處理的工作原理。社交媒體流加載到Amazon Kinesis中,然后觸發(fā)Amazon Lambda。Amazon Lambda運(yùn)行代碼生成主題標(biāo)簽趨勢數(shù)據(jù),并將數(shù)據(jù)存儲在DynamoDB中方便查詢。

  03/Web應(yīng)用程序

  通過Amazon S3、API網(wǎng)關(guān)、Amazon Lambda和DynamoDB如何協(xié)同工作以檢索Web或移動應(yīng)用程序的天氣數(shù)據(jù)。

  04/IoT后端

  使用Amazon Lambda構(gòu)建無服務(wù)器后端,以處理Web、移動、物聯(lián)網(wǎng)(IoT)和第三方API請求。

  對于開發(fā)者而言,Amazon Lambda允許開發(fā)人員在云中運(yùn)行代碼,無需管理服務(wù)器,能以更簡單、更靈活的方式構(gòu)建和運(yùn)行應(yīng)用程序,提供了自動擴(kuò)展、事件驅(qū)動、事件日志和監(jiān)控、可定制性、多語言支持等功能,與其他Amazon服務(wù)集成緊密,可幫助開發(fā)人員構(gòu)建高效、可靠的云應(yīng)用。

   投稿郵箱:chuanbeiol@163.com   詳情請?jiān)L問川北在線:http://www.dstuf.com/

川北在線-川北全搜索版權(quán)與免責(zé)聲明
①凡注明"來源:XXX(非在線)"的作品,均轉(zhuǎn)載自其它媒體,轉(zhuǎn)載目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對其真實(shí)性負(fù)責(zé),本網(wǎng)不承擔(dān)此類稿件侵權(quán)行為的連帶責(zé)任。
②本站所載之信息僅為網(wǎng)民提供參考之用,不構(gòu)成任何投資建議,文章觀點(diǎn)不代表本站立場,其真實(shí)性由作者或稿源方負(fù)責(zé),本站信息接受廣大網(wǎng)民的監(jiān)督、投訴、批評。
③本站轉(zhuǎn)載純粹出于為網(wǎng)民傳遞更多信息之目的,本站不原創(chuàng)、不存儲視頻,所有視頻均分享自其他視頻分享網(wǎng)站,如涉及到您的版權(quán)問題,請與本網(wǎng)聯(lián)系,我站將及時(shí)進(jìn)行刪除處理。



圖庫
合作媒體
金寵物 綠植迷
法律顧問:ITLAW-莊毅雄律師