




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
云計算技術
單元11無服務器架構、消息隊列、消息通知服務單元概述
無服務器架構(Serverless)也稱為FaaS(FunctionasaService,函數即服務),這些Function運行在獨立的容器里,基于事件驅動,并由第三方廠商托管,由于無需維護服務器因此無服務器架構進一步降低了使用云服務的成本大型的應用常常采用分層架構,例如Web層、應用層、數據庫層等,層與層相互依賴之間,一層的變化容易引起其他層的變化解耦是指使用一些服務或者組件打斷層與層之間的直接依賴,可以使用負載均衡器、消息隊列、消息通知等服務實現解耦學習目標知識點:無服務器架構AmazonLambda服務AmazonSQSAmazonSNS技能點:AmazonLambda函數的創建和測試AmazonSQS的使用AmazonSNS的使用項目1使用AmazonLambda服務項目描述本實驗通過AmazonLambda實現對用戶上傳到S3存儲桶(text-uploaded-XXXXX)的文本自動生成大寫文本并放到S3存儲桶(text-capitalized-XXXXX)任務1知識預備與方案設計項目1使用AmazonLambda服務1.無服務器架構無服務器(Serverless)架構是云服務提供商動態管理服務器資源分配的云計算技術。無服務器架構允許開發人員運行后端代碼,而無需管理自己的服務器系統或服務器端應用程序。當某個條件或事件觸發時,業務進程會被隔離運行。開發人員可以將他們自己的代碼與其他最佳的服務相結合,創建應用程序,以便他們可以通過用戶測試,進行快速發布和迭代。而運行業務進程需要的資源通常會由云服務商管理。通過將多樣的觸發器與第三方云服務、客戶端邏輯和調用云服務的能力集成起來,無服務器架構可交付通常我們稱為“函數即服務(FaaS)”項目1使用AmazonLambda服務2.AmazonLambda介紹AmazonLambda是一項無服務器計算服務,可以運行用戶提供的代碼來響應事件并自動管理計算資源,無需用戶手動部署和管理代碼運行環境,從而可以讓開發人員輕松構建快速響應新信息的應用程序。無服務器架構的好處不考慮基礎設施可以減輕開發人員運行的應用程序的運行復雜性橫向擴展是完全自動化和具有彈性的減少封裝和部署復雜性使開發人員能夠快速迭代隨著計算單位縮小到一個功能(與云主機或容器相反),資源利用水平是前所未有的,允許用戶為按照使用量準確付費AmazonLambda可在事件發生后幾毫秒內運行設計好的代碼,如圖像上傳、應用內活動、網站點擊或聯網設備的輸出。我們還可以使用AmazonLambda來創建新的后端服務,其中的計算資源會根據自定義的請求被自動觸發項目1使用AmazonLambda服務3.方案設計用戶將文本文件上傳到AmazonS3中的存儲桶(text-uploaded-XXXXX)中,產生對象創建事件。AmazonS3調用AmazonLambda并將事件數據作為參數進行傳遞。AmazonLambda執行設計好的函數代碼,該函數會通過事件數據中包含的信息從上傳存儲桶中讀取用戶上傳的文本,并將大寫后的文本存儲到目標桶(text-capitalized-XXXXX)中任務2創建Lambda函數項目1使用AmazonLambda服務(1)創建S3存儲桶,桶的名稱分別為text-uploaded-XXXXX和text-capitalized-XXXXX,將XXXXX替換為隨機數避免名稱沖突,具體步驟參考單元6(2)在AmazonWebServices服務控制臺,在“服務”一欄搜索Lambda并點擊進入,點擊“創建函數”按鈕項目1使用AmazonLambda服務(3)進入創建函數頁面,選擇“從頭開始創作”。函數名稱填入“s3-text-capitalize”,運行時選擇“Python3.8”,執行角色選擇“使用現有角色”,并選擇“lambda-s3-execution-role”角色,點擊“創建函數”項目1使用AmazonLambda服務(4)在“函數概述”面板中點擊“+添加觸發器”按鈕項目1使用AmazonLambda服務(5)在彈出的觸發器配置中的搜索框中,輸入“S3”并選擇“S3”。存儲桶選擇之前創建的“text-uploaded-XXXXX”,事件類型選擇“所有對象創建事件”,勾選“遞歸調用”提示框中的提示,最后點擊“添加”按鈕完成觸發器的添加項目1使用AmazonLambda服務(6)在代碼框中粘貼以下Python代碼并點擊“Depoly”按鈕進行部署importboto3importuuidimportosfromurllib.parseimportunquote_pluss3_client=boto3.client('s3')defsave_capitalized_text(source_path,dest_path):withopen(source_path)assource_file,open(dest_path,"w+")asdest_file:forlineinsource_file:dest_file.write(line.upper())deflambda_handler(event,context):forrecordinevent['Records']:key=unquote_plus(record['s3']['object']['key'])tmp_key=key.replace('/','')fname_source=f'/tmp/{uuid.uuid4()}{key}'s3_client.download_file("text-uploaded-XXXXX",key,fname_source)fname_dest=f'/tmp/capitalized-{tmp_key}'save_capitalized_text(fname_source,fname_dest)s3_client.upload_file(fname_dest,f'text-capitalized-XXXXX',key)os.remove(fname_source)os.remove(fname_dest)return任務3測試Lambda函數項目1使用AmazonLambda服務(1)打開測試一欄,在模版中選擇“s3-put”,名稱填寫“fileUpload”項目1使用AmazonLambda服務(2)將測試JSON中的arn改為S3存儲桶的arn,name改為“text-uploaded-XXXXX”,key改為“test.txt”,完成后點擊保存更改項目1使用AmazonLambda服務(3)新建一個文本文件,命名為“test.txt”,文件內容為“testawslambda”,并上傳到S3存儲桶text-uploaded-XXXXX(4)回到代碼頁面,點擊“Test”進行測試。可以看到測試成功項目1使用AmazonLambda服務(5)打開S3存儲桶text-capitalized-XXXXX,可以看到lambda已經將文本大寫后存儲到了test.txt中項目1使用AmazonLambda服務(6)在以上測試步驟中,我們使用測試功能手動觸發事件,驗證了Lambda函數可以正常運行。現在模擬真實環境中用戶上傳文件觸發事件,進而觸發Lambda函數執行。打開text-uploaded-XXXXX存儲桶上傳頁面,上傳一個包含英文小寫字符串“helloworld!”的文件hello.txt項目1使用AmazonLambda服務(7)和步驟(5)
類似,查看text-capitalized-XXXXX存儲桶,可以看到大寫轉換后的文本文件已經生成項目1使用AmazonLambda服務(8)在Lambda函數的監控頁面,可以看到Lambda函數執行的時間、時長、錯誤率等信息項目2使用AmazonSQS和AmazonSNS服務項目描述本實驗通過創建和測試AmazonSQS標準隊列和AmazonSQS主題并設置訂閱,對消息收發和訂閱收取進行了解和測試項目2使用AmazonSQS和AmazonSNS服務任務1知識預備與方案設計1.解耦基礎設施云架構中,各種基礎設施常常相互依賴,如圖,Web服務器需要依賴應用程序服務器完成它的功能圖左側,Web服務器和應用程序服務器為緊耦合關系,當應用程序服務器增加、減少,則需要在Web服務器進行相應的更改,靈活性和拓展性收到很大限制。圖右側,Web服務器和應用程序服務器間增加了負載均衡器組件,Web服務器通過負載均衡器訪問應用程序服務器,即使應用程序服務器有增減,負載均衡器會自動把流量轉發到正常服務器上,不需要對Web服務器進行更改項目2使用AmazonSQS和AmazonSNS服務2.簡單消息服務(SQS)介紹AmazonSQS(SimpleQueueService)是一種完全托管的消息隊列服務,可以幫助我們分離和擴展微服務、分布式系統和無服務器應用程序SQS消除了與管理和運營消息型中間件相關的復雜性和開銷,并使開發人員能夠專注于重要工作借助SQS可以在各組件之間發送、存儲和接收任何規模的消息,而不會丟失消息,并且無需其他服務即可保持高可用使用AmazonWebServices控制臺、命令行界面或SDK和三個簡單的命令,在幾分鐘內即可開始使用SQS。SQS提供兩種消息隊列類型。標準隊列提供最高吞吐量、最大努力排序和至少一次傳送。FIFO隊列則確保按照消息的發送順序對消息進行嚴格一次處理項目2使用AmazonSQS和AmazonSNS服務3.簡單消息服務(SNS)介紹AmazonSNS(SimpleNotificationService)是一項用于應用與應用之間(A2A)以及應用與人之間(A2P)通信的完全托管型消息收發服務A2A發布/訂閱功能為分布式系統、微服務和事件驅動型無服務器應用程序之間的高吞吐量、基于推送的多對多消息傳遞提供主題借助AmazonSNS主題,發布系統可以向大量訂閱系統(包括AmazonSQS隊列、AmazonLambda函數和HTTP/S終端節點)扇出消息,從而實現并行處理,以及將消息發送到AmazonKinesisDataFirehose。使用A2P功能,可以通過短信、移動推送和電子郵件將消息大規模發送給用戶項目2使用AmazonSQS和AmazonSNS服務4.方案設計首先創建AmazonSQS標準隊列,并通過控制臺提供的工具測試消息收發功能然后創建AmazonSNS主題,并使用創建好的SQS進行訂閱,通過控制臺提供的工具測試消息發布和接收功能項目2使用AmazonSQS和AmazonSNS服務任務2創建隊列(1)在AmazonWebServices控制臺中找到SQS服務,點擊“創建隊列”按鈕,對待創建的隊列進行配置。類型選擇“標準”;隊列名稱填“lab-queue”,其他配置保持默認即可。單擊“創建隊列”項目2使用AmazonSQS和AmazonSNS服務(2)創建完成后會跳轉至隊列詳情,可以看到SQS隊列已經創建成功項目2使用AmazonSQS和AmazonSNS服務(3)成功創建隊列后,可以直接在頁面上測試隊列。單擊“發送和接收消息”按鈕,會跳轉到發送和接收消息頁面。在消息正文填入“testmessage”并點擊“發送消息”按鈕,一條消息即發送到了隊列lab-queue中項目2使用AmazonSQS和AmazonSNS服務(4)此時隊列中有一條消息,現在可以接收這一條消息。在接收消息一欄,點擊“輪詢消息”按鈕,成功接收消息后可以看到接收消息界面出現了一條消息。點擊消息ID,會彈出消息內容,和上一步發送消息填寫的內容一致項目2使用AmazonSQS和AmazonSNS服務任務3創建SNS主題(1)在AmazonWebServices控制臺找到Ama
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T/CECS 10136-2021空氣濾料對20 nm~500 nm球形顆粒物過濾效率試驗方法
- T/CECS 10126-2021氣凝膠絕熱厚型涂料系統
- T/CCSAS 049.2-2023石油化工企業安全泄放評估技術規范第2部分:氣液兩相流安全泄放技術要求
- T/CCS 061-2023智能化煤礦地質保障系統運維管理規范
- T/CCOA 60-2023中長鏈甘油三酯食用油
- T/CCOA 18-2020紅棕櫚油
- T/CCMA 0191-2024高原隧道純電動液壓挖掘機
- T/CCMA 0131-2022瀝青路面熱風微波復合加熱就地熱再生施工規程
- T/CCIAS 017-2023黑椒牛排醬
- T/CCASC 1007-2024甲烷氯化物生產企業安全風險隱患排查指南
- 浙江省大中型水庫控制運用計劃編制導
- 杯口基礎鋼柱安裝工法
- 本草綱目歌詞及曲譜
- 全國殯葬管理信息系統簡介
- Office辦公軟件培訓教程課件
- 【圖文】做個受歡迎的人
- 逐月兇星總局
- 火針操作規范
- 退伍軍人服役證明
- FRM真題及答案
- 十二宮卦數注解
評論
0/150
提交評論