一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

程序員必看系列—FaaS的簡單實踐

電子設(shè)計 ? 來源:電子設(shè)計 ? 作者:電子設(shè)計 ? 2020-12-25 18:42 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

FaaS或者說serverless是一種云計算模型,其主要特點是用戶根本不需要租用任何虛擬機,從啟動虛擬機,執(zhí)行代碼,返回結(jié)果和停止虛擬機這些由云提供商處理的整個過程。這比其他云計算實現(xiàn)更具成本效益。它還使開發(fā)人員能夠更加專注于開發(fā)業(yè)務(wù)邏輯,因為應(yīng)用程序的某些部分由云提供程序處理。

要啟動執(zhí)行代碼的整個過程,必須觸發(fā)它。觸發(fā)器可以是一個特定的事件,也可以是對API 管理系統(tǒng)的請求,然后將該代碼作為API 端點公開。

最流行的serverless服務(wù)之一是 AWS Lambda,它可以與AWS API 網(wǎng)關(guān)集成,創(chuàng)建一個serverless的RESTAPI。

REST API配置

API的配置將由AWS API 網(wǎng)關(guān)處理。這包括創(chuàng)建路由、處理輸入和輸出格式、身份驗證等等,而實際代碼將由Lambda 管理。

當(dāng)開啟 API 網(wǎng)關(guān)儀表板時,為您的網(wǎng)站創(chuàng)建一個新的API。然后,單擊操作創(chuàng)建資源在API 中創(chuàng)建一個新的URL 路徑。每個資源都可以支持一個或多個方法(GET,POST,put/ patch,DELETE) ,這些方法通過Actions > Create Method來添加。

例如,我們可以創(chuàng)建一個名為“post”的資源,它的路徑是“/posts”,它有兩種方法:

GET —fetch all posts 把所有的帖子都拿來

POST —create a new post 創(chuàng)建一個新的帖子

在這一點上,屏幕應(yīng)該是這樣的:

還需要處理顯示一個單一的帖子,更新一個帖子和刪除一個帖子。這些操作在REST API 中會有一個不同的路徑,這意味著需要創(chuàng)建一個新的資源。由于這個資源的路徑是“/posts / { post id }”,因此它將作為一個子資源創(chuàng)建。要做到這一點,首先單擊“posts”資源,然后去操作創(chuàng)建資源。這個資源將在路徑(post的 ID)中有一個參數(shù),可以通過將參數(shù)名包裝為“/posts / { post ID }”的括號來實現(xiàn)。創(chuàng)建資源后,將GET、 PUT 和DELETE 方法添加到其中。

API 現(xiàn)在看起來是這樣的:

每個方法將執(zhí)行相應(yīng)的AWS Lambda 函數(shù)。先創(chuàng)建這些函數(shù),然后將它們映射到適當(dāng)?shù)腁PI 方法。

創(chuàng)建 Lambda 函數(shù)

點擊AWS Lambda,點擊“Create a Lambdafunction”。下一個屏幕允許選擇編程語言(Node.js或 Python)和預(yù)定義的模板之一。選擇microservice-h(huán)ttp-endpoint,然后在下面的頁面中選擇API 名稱。也可以選擇空白函數(shù),并且不用任何預(yù)先編寫的代碼來編寫它。

最后,在可以插入代碼的頁面。可以直接在頁面上寫這個函數(shù),或者將它作為壓縮存檔上傳(如果它包含自定義庫,則需要)。當(dāng)我們使用預(yù)定義模板時,函數(shù)是自動生成的,看起來是這樣的:

from __future__ importprint_function

import boto3

import json

print(‘Loading function’)

def respond(err,res=None):

return {

‘statusCode’: ‘400’ if err else ‘200’,

‘body’: err.message if err elsejson.dumps(res),

‘headers’: {

‘Content-Type’:‘a(chǎn)pplication/json’,

},

def lambda_handler(event,context):

‘‘‘Demonstrates a simple HTTP endpointusing API Gateway. You have full

access to the request and response payload,including headers and

status code.

To scan a DynamoDB table, make a GETrequest with the TableName as a

query string parameter. To put, update, ordelete an item, make a POST,

PUT, or DELETE request respectively,passing in the payload to the

DynamoDB API as a JSON body.

’’’

#print(“Received event:”+json.dumps(event, indent=2))

operations = {

‘DELETE’: lambda dynamo, x:dynamo.delete_item(**x),

‘GET’: lambda dynamo, x:dynamo.scan(**x),

‘POST’: lambda dynamo, x:dynamo.put_item(**x),

‘PUT’: lambda dynamo, x:dynamo.update_item(**x),

operation = event[‘httpMethod’]

if operation in operations:

payload = event[‘queryStringParameters’]if operation == ‘GET’ else json.loads(event[‘body’])

dynamo =boto3.resource(‘dynamodb’).Table(payload[‘TableName’])

return respond(None,operations[operation](dynamo, payload))

else:

returnrespond(ValueError(‘Unsupported method “{}”’.format(operation)))

雖然大多數(shù)情況下不需要很多代碼(許多人會使用關(guān)系數(shù)據(jù)庫而不是NoSQL DynamoDB 數(shù)據(jù)庫) ,但它為如何訪問HTTP 請求參數(shù)和如何輸出響應(yīng)設(shè)置了一個很好的例子。

在創(chuàng)建Lambda 函數(shù)時需要注意的另一件事是handler字段。它告訴Lambda 要執(zhí)行哪個函數(shù),以及函數(shù)所在的文件。例如,如果main.py 文件中有一個名為“myfunction”的函數(shù),那么處理程序的值將是“main.myfunction”。在創(chuàng)建函數(shù)之后,它們可以映射到相應(yīng)的API 端點。

要使API 調(diào)用 Lambda 函數(shù),請單擊一個API 方法,然后進入集成請求。在該頁上,將集成類型設(shè)置為Lambda 函數(shù),并輸入您的亞馬遜區(qū)域和所需函數(shù)的名稱。對于所有的API 方法都這樣做。

在部署之前,可以測試API。每個API 方法都有一個測試按鈕,它將執(zhí)行它并顯示輸出。

一旦一切準(zhǔn)備就緒,去action Deploy API 部署你的REST API。第一次,需要創(chuàng)造一個新的階段(例如,它可以被稱為prod 或生產(chǎn)),就像一個部署環(huán)境??梢杂卸鄠€階段,不同的階段有不同的基礎(chǔ)url 和配置??梢栽谄聊蛔髠?cè)的Mywebsite API Stages 下找到各個階段。點擊該階段的名稱以獲取API 的公共 URL,以及其他配置選項,如緩存和節(jié)流。

這里展示了一個基本的例子,一個serverless的REST API,使用AWS API 網(wǎng)關(guān)和Lambda 構(gòu)建。它展示了如何在不需要開發(fā)常見的API 管理特性的情況下輕松地創(chuàng)建REST API,比如認證、路由、緩存和速率限制等。

更進一步, 物聯(lián)網(wǎng)的快速采用受到正在通過技術(shù)創(chuàng)新改變其業(yè)務(wù)的公司的支持; 制造商正在提供低成本和高端的設(shè)備和物聯(lián)網(wǎng)平臺,使設(shè)備集成和管理成為可能。物聯(lián)網(wǎng)應(yīng)該轉(zhuǎn)向靈活、可靠和高成本效益的平臺,而在基礎(chǔ)設(shè)施、軟件、知識和員工方面投入最少。

IoT的無服務(wù)架構(gòu)

如何從零開始構(gòu)建一個物聯(lián)網(wǎng)解決方案,它的基礎(chǔ)設(shè)施和維護成本為零,只需要很少的營運成本。為了實現(xiàn)這個概念,可以使用AWS的云功能。 例如,創(chuàng)建實時報告遙測數(shù)據(jù)的設(shè)備模擬器,并通過 API 實時訪問這些信息。

AWS IoT 平臺是一個強大的物聯(lián)網(wǎng)框架。 它支持 MQTT 協(xié)議,MQTT 協(xié)議是應(yīng)用最廣泛的通信協(xié)議之一。 選擇支持持久化和處理數(shù)據(jù)的服務(wù)也是基于其定價和維護成本。

AWS中所使用的組件列表如下:

AWS IoT : 用于數(shù)據(jù)收集和設(shè)備管理,

DynamoDB: 文檔存儲以持久化數(shù)據(jù)讀數(shù),

AWS Lambda : 無服務(wù)器數(shù)據(jù)處理,

S3:用作靜態(tài)網(wǎng)站托管的塊存儲,

Gateway API :REST 訪問數(shù)據(jù)

總體數(shù)據(jù)流是以下方式工作的:

設(shè)備向 AWS IoT 發(fā)送小量數(shù)據(jù)(每5秒) ,

物聯(lián)網(wǎng)將數(shù)據(jù)存儲到 DynamoDB 表中*

Lambda函數(shù)每分鐘和每小時被觸發(fā)去做數(shù)據(jù)分析并將結(jié)果存儲回 DynamoDB,

API Gateway 通過 REST API 將 DynamoDB 的數(shù)據(jù)公開

靜態(tài) HTML 網(wǎng)站托管在 S3上,并使用 RESTAPI 來顯示實時數(shù)據(jù)圖表和分析

第二點乍看起來可能有點傻,因為可能會認為 DynamoDB 不是存儲原始時間序列數(shù)據(jù)的最佳選擇。 然而,這里是為了演示的目的。可以考慮使用 Firehose 作為從物聯(lián)網(wǎng)到 S3/reshift 和 EMR 集群的傳輸流來進行數(shù)據(jù)處理,但對于這個簡單實踐而言,這里只是一個臨時的做法。

架構(gòu)設(shè)置了以下關(guān)鍵參數(shù):

免費,如果沒有設(shè)備報告任何數(shù)據(jù)。 另外,通過亞馬遜的免費版,可以免費獲得少量的資源

由于每個選定組件的性質(zhì),高度可擴展且可以從AWS中獲取

啟動只需的最基本知識,只需要定義規(guī)則和用一種非常流行的語言編寫邏輯: JavaScript,Python 或者 Java

IoT無服務(wù)架構(gòu)的成本分析

假設(shè)后端操作每分鐘只需要處理幾個請求,這意味著大部分時間您的 CPU 處于空閑狀態(tài)。 假設(shè)不想為空閑時間買單。 因此,這里提出了無服務(wù)器架構(gòu)。

假設(shè)有10000個設(shè)備每15分鐘報告一小部分數(shù)據(jù),這就導(dǎo)致每月平均730個小時,每月約有2920萬個請求。AWS物聯(lián)網(wǎng)每100萬個請求花費5美元,DynamoDB 每秒花費0.0065美元,每秒需要花費50次。

通過 AWS IoT,每月將付出146美元左右的,14美元用于在 DynamoDB 中運行的最小存儲容量,總共有160美元,相當(dāng)于每臺設(shè)備每月0.02美元或者每次0.000005美元。 盡管這沒有考慮到 lambda、存儲器和 API 網(wǎng)關(guān)的使用,但它們實際上只是這些數(shù)字的一小部分,因此可以省略。

這是令人印象深刻的。物聯(lián)網(wǎng)解決方案與數(shù)以千計的設(shè)備連接,這將花費不到200美元每月。 然而,讓我們想象一下,如果一個企業(yè)的設(shè)備每秒鐘都在報告關(guān)鍵數(shù)據(jù)(而不是每隔15分鐘) ,而且有成千上萬的數(shù)據(jù)。 還愿意為FaaS付多少錢呢?

如果一萬臺設(shè)備每秒發(fā)送一條消息,月付款將超過1.36萬美元。如果是10萬臺設(shè)備, 每月每臺設(shè)備的費用增加到13.61美元,還是挺貴的。

無服務(wù)架構(gòu)IoT方案的優(yōu)缺點

所有這些數(shù)字意味著優(yōu)化的請求率將會立即和幾乎線性地導(dǎo)致月度費用減少。這就帶來了必須考慮的第二個重要結(jié)論,即所有權(quán)的總成本。 有一個虛擬的門檻值,超過這個閾值,無關(guān)緊要的方法就會變得非常昂貴,而且可能不會有效。

例如,傳統(tǒng)的體系結(jié)構(gòu)實現(xiàn)成本可能不是很大程度上取決于設(shè)備的數(shù)量或每秒請求的數(shù)量,而是取決于額外的運營費用,使用開源解決方案也可以降低成本。

毫無疑問,無服務(wù)架構(gòu)有許多優(yōu)點:

它將資本支出轉(zhuǎn)化為經(jīng)營支出,并通常降低經(jīng)營成本;

不必考慮內(nèi)部系統(tǒng)管理流程;

它減少了開發(fā)和部署成本和時間框架(更快的上市時間) ;

它具有可擴展性和容錯性

要考慮的第一個因素是為項目的需求, 如果不關(guān)心云鎖定,而且是一家創(chuàng)業(yè)公司,需要快速驗證想法,或者有一個很短的時間去營銷,或者解決方案不需要頻繁地將數(shù)據(jù)從設(shè)備傳輸?shù)皆疲虼丝梢詫⒚颗_設(shè)備的成本保持在相對較低的水平。

另一方面,如果正在構(gòu)建一個與云無關(guān)的、高度可定制的解決方案,并且使用實時數(shù)據(jù)進行操作,可以考慮使用自定義或開源物聯(lián)網(wǎng)解決方案。

審核編輯:符乾江


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 云服務(wù)
    +關(guān)注

    關(guān)注

    0

    文章

    855

    瀏覽量

    39686
  • AWS
    AWS
    +關(guān)注

    關(guān)注

    0

    文章

    435

    瀏覽量

    25244
  • serverless
    +關(guān)注

    關(guān)注

    0

    文章

    65

    瀏覽量

    4715
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)

    的地址)出發(fā),采用推導(dǎo)的方式,深入淺出的分析了廣大C程序員學(xué)習(xí)和開發(fā)中遇到的難點。 2. 從方法論的高度對C語言在數(shù)據(jù)結(jié)構(gòu)和算法方面的應(yīng)用進行了深入講解和闡述。 3. 講解了絕大多數(shù)C程序員開發(fā)
    發(fā)表于 05-13 16:45

    零基礎(chǔ)入門:如何在樹莓派上編寫和運行Python程序?

    是一種非常有用的編程語言,其語法易于閱讀,允許程序員使用比匯編、C或Java等語言更少的代碼行。Python編程語言最初實際上是作為Linux的腳本語言而開發(fā)的。Py
    的頭像 發(fā)表于 03-25 09:27 ?702次閱讀
    零基礎(chǔ)入門:如何在樹莓派上編寫和運行Python<b class='flag-5'>程序</b>?

    阿里云升級通義靈碼AI程序員,全面上線

    近日,阿里云宣布其備受矚目的通義靈碼AI程序員已正式全面上線,為開發(fā)者帶來更為強大和便捷的編程輔助工具。 此次上線的通義靈碼AI程序員,在功能上實現(xiàn)了全面升級。現(xiàn)在,它支持VS Code
    的頭像 發(fā)表于 01-09 11:16 ?703次閱讀

    夢之墨創(chuàng)新工程教育實踐套件家族再添一

    在電子信息工程教育領(lǐng)域,理論與實踐相結(jié)合的教學(xué)模式正日益受到重視。近期,夢之墨創(chuàng)新工程教育實踐套件家族再添一,即基于電子增材制造技術(shù)與電子工程教育深度整合的工程實訓(xùn)創(chuàng)新應(yīng)用案例——“調(diào)頻收音機”套件。該套件可作為融合綜合理論知
    的頭像 發(fā)表于 01-02 10:37 ?503次閱讀

    TMS320C6000程序員指南

    電子發(fā)燒友網(wǎng)站提供《TMS320C6000程序員指南.pdf》資料免費下載
    發(fā)表于 12-24 17:19 ?0次下載
    TMS320C6000<b class='flag-5'>程序員</b>指南

    TMS320C55x DSP CPU程序員參考補充

    電子發(fā)燒友網(wǎng)站提供《TMS320C55x DSP CPU程序員參考補充.pdf》資料免費下載
    發(fā)表于 12-21 11:36 ?3次下載
    TMS320C55x DSP CPU<b class='flag-5'>程序員</b>參考補充

    UCD3138A64/UCD3138128程序員手冊

    電子發(fā)燒友網(wǎng)站提供《UCD3138A64/UCD3138128程序員手冊.pdf》資料免費下載
    發(fā)表于 12-09 14:42 ?0次下載
    UCD3138A64/UCD3138128<b class='flag-5'>程序員</b>手冊

    機械革命發(fā)布CODE AI程序員

    近日,英特爾新質(zhì)生產(chǎn)力技術(shù)生態(tài)大會在成都舉行,機械革命作為重要參展商帶來了多款明星產(chǎn)品引爆全場!其中更是在AI PC軟件生態(tài)產(chǎn)品發(fā)布分論壇上,Intel、智譜、機械革命三方聯(lián)合發(fā)布了專為程序員設(shè)計的CODE AI程序員本,成為本次大會的一大亮點。
    的頭像 發(fā)表于 11-30 10:34 ?1094次閱讀

    Linux驅(qū)動程序程序員指南

    電子發(fā)燒友網(wǎng)站提供《Linux驅(qū)動程序程序員指南.pdf》資料免費下載
    發(fā)表于 11-22 15:53 ?0次下載
    Linux驅(qū)動<b class='flag-5'>程序</b><b class='flag-5'>程序員</b>指南

    AI編程工具會不會搶程序員飯碗

    AI編程工具可輔助編程,減少手動編碼,提升效率,對程序員有積極影響也有挑戰(zhàn)。程序員需深化技能、拓寬知識應(yīng)對。長遠看,AI與人類程序員將共生共榮。
    的頭像 發(fā)表于 11-08 10:17 ?524次閱讀

    軟通動力子公司鴻湖萬聯(lián)助陣鴻蒙1024程序員節(jié)成功舉辦

    10月24日,在武漢、成都、深圳等地政府指導(dǎo)下,鴻蒙生態(tài)服務(wù)公司舉辦了一場面向廣大開發(fā)者的盛會——鴻蒙1024程序員節(jié)暨鴻蒙原生應(yīng)用交流會。軟通動力子公司鴻湖萬聯(lián)作為開源鴻蒙生態(tài)的重要參與者和貢獻者
    的頭像 發(fā)表于 10-29 15:49 ?747次閱讀
    軟通動力子公司鴻湖萬聯(lián)助陣鴻蒙1024<b class='flag-5'>程序員</b>節(jié)成功舉辦

    第五屆長沙·中國1024程序員節(jié)開幕

    據(jù)官方媒體報道,10月24日;? 第五屆長沙·中國1024程序員節(jié)在湖南湘江新區(qū)開幕;本次中國1024程序員節(jié)以“智能應(yīng)用新生態(tài)”為主題。設(shè)置有岳麓對話、技術(shù)英雄會、主題峰會及賽事、展覽等活動,一場
    的頭像 發(fā)表于 10-25 15:42 ?489次閱讀

    90后程序員的職業(yè)成長漫談

    作者:京東零售 盧楠 前言: 我在京東工作已經(jīng)來到第8個年頭,從2016年的實習(xí)生到如今負責(zé)部門整體架構(gòu),這段職業(yè)旅程中充滿了感悟。 簡單回顧我的個人成長里程碑:2017年正式加入京東后,從一名新人
    的頭像 發(fā)表于 10-15 15:24 ?541次閱讀
    90后<b class='flag-5'>程序員</b>的職業(yè)成長漫談

    技術(shù)干貨驛站 ▏深入理解C語言:掌握程序結(jié)構(gòu)知識

    在計算機編程的世界中,C語言被廣泛認可為一門強大而高效的編程語言,其簡潔的語法和直接的指令使得它成為了許多程序員的首選。了解C語言的程序結(jié)構(gòu)和基本語法對于初學(xué)者來說至關(guān)重要。從一個簡單
    的頭像 發(fā)表于 07-27 08:45 ?1849次閱讀
    技術(shù)干貨驛站 ▏深入理解C語言:掌握<b class='flag-5'>程序</b>結(jié)構(gòu)知識

    京東上萬程序員都AI用它!

    對大模型生成代碼進行智能修復(fù),為程序員開啟代碼漏洞修復(fù)的“自動駕駛”模式,不但減少人工接入、提高工作效率,更為企業(yè)抵御內(nèi)外部各種攻擊構(gòu)建起一道堅固的安全屏障,確保業(yè)務(wù)的連續(xù)性和穩(wěn)定性。 JoyCoder是京東云自主研發(fā)的一款輔助開發(fā)人員
    的頭像 發(fā)表于 07-17 16:29 ?488次閱讀
    京東上萬<b class='flag-5'>程序員</b>都AI用它!