日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

技术系列课回顾 | 浅谈 Serverless 开发和应用

發(fā)布時間:2025/3/8 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 技术系列课回顾 | 浅谈 Serverless 开发和应用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

導(dǎo)讀:本文整理自網(wǎng)易云信后端開發(fā)工程師葛馨霓的線上直播,文末也可查看直播回顧視頻,也歡迎關(guān)注今晚的線上直播。

文|葛馨霓

網(wǎng)易云信后端開發(fā)工程師

AWS Serverless 服務(wù)是一種對應(yīng)用的工程師來說無服務(wù)器的計算方式,基礎(chǔ)概念是將運(yùn)行服務(wù)所需的基礎(chǔ)設(shè)施交由 AWS 管理。使用 AWS Serverless 服務(wù)的工程師可以專注于面向客戶邏輯服務(wù)層的開發(fā),而不需要在基礎(chǔ)設(shè)施的構(gòu)建、管理、擴(kuò)容等任務(wù)上分散過多精力。AWS Serverless 開發(fā)的核心是名為 Lambda 的計算服務(wù)。

今天我們將圍繞?Lambda 服務(wù),介紹在不同的應(yīng)用場景下,Lambda 與其他各種 AWS 服務(wù)的組裝模式,來初步探討基于 AWS Serverless 的開發(fā)部署方式

What?

首先介紹一下什么是 Serverless 開發(fā)。

和經(jīng)典的開發(fā)、編譯、部署運(yùn)行方式不同,使用 AWS Serverless 計算服務(wù) Lambda,僅需要上傳源文件,選擇執(zhí)行環(huán)境并執(zhí)行,便能得到運(yùn)行結(jié)果。在這過程中,服務(wù)器部署、runtime 安裝、編譯、都由 AWS Serverless 計算平臺管理執(zhí)行。對開發(fā)人員來說,只需要維護(hù)源代碼和 AWS Serverless 執(zhí)行環(huán)境的相關(guān)配置即可。

Why?

為什么要選擇 Serverless 呢?

對開發(fā)人員來說,使用 AWS Serverless 服務(wù)能夠節(jié)省大量管理基礎(chǔ)設(shè)施架構(gòu)的精力,并更好地專注于業(yè)務(wù)邏輯的開發(fā)。而對服務(wù)而言,AWS 本身的服務(wù)性質(zhì)使得它能很好的支持彈性擴(kuò)展和高并發(fā)場景。此外基于 AWS Serverless 的開發(fā)往往擁有快速更新、快速部署的優(yōu)點(diǎn),其按需收費(fèi)(on-demand)的收費(fèi)方式,在如輕量部署測試環(huán)境、快速驗證等應(yīng)用場景下對削減開支也有優(yōu)勢。

How?

那么,我們來看一下如何用 AWS Serverless 的相關(guān)服務(wù)迅速組裝一個簡單的 Web Service。

AWS Serverless 提供了豐富的服務(wù)目錄,以覆蓋各種功能的使用需求。搭建 Web Service 服務(wù)除了核心的計算服務(wù) Lambda 之外,常常還需要和請求入口路由(API Gateway)、持久化存儲(S3)、CDN(CloudFront)、防火墻(WAF)、域名解析(Route 53)等服務(wù)組合使用。如果需要支持 https 協(xié)議,還可以使用證書管理服務(wù)(ACM)實(shí)現(xiàn)。

將上述服務(wù)組裝好之后,一個完整的響應(yīng)請求流程將會是這樣的:

  • 用戶請求經(jīng)由域名解析到達(dá) CloudFront,由 WAF 進(jìn)行頻率控制、IP 過濾、header 驗證等安全性保障后,通過 API Gateway 路由轉(zhuǎn)發(fā)給核心的 Lambda 計算服務(wù)。

  • Lambda 會對請求進(jìn)行處理,處理時如若需要會從持久化存儲 S3 中讀取或存儲數(shù)據(jù),并且最終將處理結(jié)果通過 API Gateway 返回給用戶端。

  • Lambda 在邏輯計算時產(chǎn)生的日志會輸出到 CloudWatch 提供的日志管理服務(wù)中以便日后查詢。此外,還可以進(jìn)行額外的優(yōu)化,比如配置 CloudFront 直接從 S3 中加載靜態(tài)資源,以減輕時間和計算開銷。

Lambda 的啟動方式

在剛剛的 Web Service 的例子中,Lambda 的執(zhí)行是由 API Gateway 服務(wù)喚起(Invoke)的。實(shí)際上 Lambda 執(zhí)行可由多種方式喚起。首先 AWS 本身的服務(wù)中,常常會和 Lambda 結(jié)合使用的有消息發(fā)布(SNS)、消息隊列(SQS)、負(fù)載均衡器(ALB)、狀態(tài)機(jī)(Step Function)等服務(wù)。

當(dāng)然通過 SDK、Command Line 或者 API 接口,也可以啟動 Lambda 函數(shù)的執(zhí)行。執(zhí)行模式分為同步和異步兩種:

  • 同步模式的調(diào)用:需要等待 Lambda 函數(shù)執(zhí)行完畢才會返回結(jié)果

  • 異步模式的調(diào)用:在調(diào)用 Lambda 的執(zhí)行接口之后會立即返回,Lambda 函數(shù)的執(zhí)行結(jié)果需要通過其他途徑獲取。

這兩種調(diào)用模式可供不同場景靈活選擇使用。

消息驅(qū)動的例子

我們再看一個消息驅(qū)動的報警處理系統(tǒng)中使用 AWS Serverless 服務(wù)的例子。

比如我們有一個運(yùn)行中的系統(tǒng),設(shè)定異常報警發(fā)生時會將報警消息發(fā)送給 SNS 服務(wù)。SNS 服務(wù)是一個消息的 Pub/Sub 服務(wù),對報警消息執(zhí)行一個基礎(chǔ)的 fan-out 發(fā)布操作,一方面通過電話、郵件通知負(fù)責(zé)人,另一方面同時調(diào)用 Lambda,Lambda 中可以進(jìn)行一些對報警的自動化處理。這就是一個最簡單的報警處理系統(tǒng)。

但是在這里要注意,SNS 服務(wù)本身不存儲消息。SNS 接收到消息后,會馬上進(jìn)行發(fā)布消息。如果此時沒有消息的接受者,那么這條消息就會被丟棄。除此之外,消息傳遞成功,即調(diào)用 Lambda 的接口成功之后,無論處理結(jié)果如何,消息都會被丟棄。如果 Lambda 因為一些內(nèi)部邏輯錯誤、或者外部依賴系統(tǒng)故障等原因,處理過程執(zhí)行失敗了,那么對已經(jīng)丟失的消息是無法進(jìn)行重試操作的。要提高消息處理的可靠性,可以通過在 SNS 和 Lambda 之間加入消息隊列服務(wù)(SQS)來實(shí)現(xiàn)。

SQS 標(biāo)準(zhǔn)隊列提供一個無序可靠、支持高并發(fā)的隊列服務(wù),可以存儲消息長達(dá)14天。SNS 將消息發(fā)布至 SQS,消息首先會被存儲在 SQS 中。此時,再設(shè)置 SQS 為 Lambda 的事件源(event source),那么消息就會被發(fā)送至 Lambda 進(jìn)行下一步處理。SQS 喚起 Lambda 可以配置為一個同步的過程,也就是說,如果 Lambda 執(zhí)行失敗并返回錯誤,SQS 就不會從隊列中刪除這條消息。處理失敗的消息暫時會被標(biāo)記為不可見,在一段隱藏期限過后,SQS 將會再次重復(fù)喚起 Lambda 來處理這條消息。這種方式可以大大提高消息處理的可靠性。

但是上述方式同時也引入了異常消息大量堆積而降低正常消息執(zhí)行效率的問題。為了解決這個新問題,我們可以為消息隊列配置一個 Dead-Letter Queue。如果某條消息經(jīng)過多次處理依然不成功,可被從原來的隊列中刪除,并且轉(zhuǎn)移到 Dead-Letter Queue中。標(biāo)準(zhǔn)隊列的 Dead-Letter Queue 本質(zhì)上也是標(biāo)準(zhǔn)隊列,同樣可以繼續(xù)對其中的“廢棄”消息進(jìn)行其他后續(xù)處理。

標(biāo)準(zhǔn)隊列能夠較好地支持高并發(fā)場景。一個標(biāo)準(zhǔn)隊列能夠同時接受大量消息,并發(fā)地喚起大量 Lambda 實(shí)例進(jìn)行處理。與此對應(yīng),標(biāo)準(zhǔn)隊列服務(wù)不能保證消息投遞的順序,同一條消息也可能重復(fù)投遞。所以在使用 SQS 標(biāo)準(zhǔn)隊列時,需要考慮消息的去重、處理邏輯的冪等性等問題。除了標(biāo)準(zhǔn)隊列,SQS 還有另一種先進(jìn)先出型(FIFO)隊列。FIFO 犧牲了并發(fā)性能,來保證消息投遞的順序性和唯一性。在不同應(yīng)用場景下,可以根據(jù)具體需求來靈活選擇使用不同的隊列類型。

總結(jié)

AWS Serverless 服務(wù)在解耦合、彈性擴(kuò)展、跨區(qū)域部署等方面有天然的優(yōu)勢,但同時也有局限性:

  • 單次 Lambda 的執(zhí)行上限為15分鐘,對長時間工作支持性較差。

  • 構(gòu)筑在 Serverless 架構(gòu)上服務(wù)的可用性非常依賴于 AWS 可用性。

  • 基于 Serverless 的開發(fā)會產(chǎn)生對 AWS 系統(tǒng)的學(xué)習(xí)成本,調(diào)試、故障處理的難度也會變高。

在實(shí)際生產(chǎn)活動中,需要全面考慮需求,平衡好成本與效果。在某些適合微服務(wù)的應(yīng)用場景下,特別在執(zhí)行短狀態(tài)、臨時性等任務(wù)時,基于 AWS Serverless 的開發(fā)可以成為十分便利的開發(fā)手段。

以上就是本次分享的全部內(nèi)容,關(guān)于本次分享的視頻,也可以點(diǎn)擊【閱讀原文】進(jìn)行查看。

?作者介紹?

葛馨霓,網(wǎng)易云信后端開發(fā)工程師,在海外有基于 AWS Serverless 的開發(fā)經(jīng)驗,現(xiàn)在從事云信后端調(diào)度開發(fā)。

?直播預(yù)告?

今晚19點(diǎn),線上直播?MCtalk Live#3,跟大家分享【直播點(diǎn)播窄帶高清之 JND 感知編碼技術(shù)】,歡迎掃碼報名,鎖定直播間。

?延伸閱讀?

  • 云信技術(shù)系列課 | RTC 系統(tǒng)音頻弱網(wǎng)對抗技術(shù)發(fā)展與實(shí)踐

  • 云信技術(shù)系列課回顧視頻|視頻直播關(guān)鍵技術(shù)和趨勢

  • 技術(shù)系列課|網(wǎng)易云信音視頻通話2.0產(chǎn)品中的美聲/變聲功能

總結(jié)

以上是生活随笔為你收集整理的技术系列课回顾 | 浅谈 Serverless 开发和应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。