文章轉(zhuǎn)載來源《千家網(wǎng)》
你推出了一個新的物聯(lián)網(wǎng)產(chǎn)品,可能使用AWS、Azure或其他主要云提供商提供的物聯(lián)網(wǎng)框架,你的設(shè)備現(xiàn)在可以從云發(fā)送和接收數(shù)據(jù)。那么,如何處理這些數(shù)據(jù)以獲得有價值的見解,例如設(shè)備健康遙測或用戶行為跟蹤?有許多不同的方法可以在云中建立數(shù)據(jù)處理基礎(chǔ)設(shè)施,以平衡控制和復雜性。無服務(wù)器架構(gòu)最終是一種軟件設(shè)計原則,它允許您在不管理基礎(chǔ)設(shè)施的情況下構(gòu)建、擴展和運行服務(wù),而MistyWest對這種“無服務(wù)器”模式如何使團隊能夠快速構(gòu)建和擴展云解決方案感到興奮。
為了幫助您理解這對于物聯(lián)網(wǎng)產(chǎn)品解決方案的適用性,我們提供了以下不同架構(gòu)模式的概述,以及您應(yīng)該在什么情況下考慮為您的項目采用無服務(wù)器。
使用虛擬機
現(xiàn)在,設(shè)置云管道的老派方法(如果希望獲得更多控制,推薦使用這種方法)是在云中啟動一個虛擬機(VM)來運行處理代碼。Azure虛擬機、AWS EC2或GCP計算引擎是一些常見的選項。你得到一個虛擬計算機,它可以運行類似于在你的個人計算機上運行的代碼。然而,這種路由的局限性是,您將迅速耗盡單個VM的處理能力,特別是當您正在處理來自數(shù)千個物聯(lián)網(wǎng)設(shè)備的數(shù)據(jù)時。
要獲得更強的處理能力,可以添加更多vm并將處理工作分配給多臺計算機。像Kubernetes和Docker Swarm這樣的工具可以讓您跨多臺機器編排處理工作負載,云提供商提供AWS Elastic Kubernetes Service和谷歌Kubernetes Engine這樣的服務(wù),以支持在云中跨多臺機器編排工作負載。像AWS Elastic Beanstalk或Azure App Services這樣的服務(wù)可以自動設(shè)置和擴展常見的web開發(fā)框架,如Django、Rails和Node,它們是很好的起點服務(wù),可以幫助你管理它們。
然而,設(shè)置和配置編排工具可能是復雜的,需要大量的時間和專業(yè)知識,不能直接為客戶提供價值。如果你想快速構(gòu)建原型,為客戶提供價值,并且你知道你的解決方案可以擴展,那么無服務(wù)器可能是正確的選擇。
什么是無服務(wù)器架構(gòu)?
無服務(wù)器架構(gòu)允許您將服務(wù)器管理完全卸載給云提供商,同時可以直接專注于應(yīng)用程序代碼。一個更常見的體系結(jié)構(gòu)子集是功能即服務(wù)(FaaS)。但無服務(wù)器體系結(jié)構(gòu)提供的服務(wù)遠不止這些——從數(shù)據(jù)庫和隊列系統(tǒng)到事件處理服務(wù),每個云服務(wù)提供商都提供各種各樣的服務(wù)來滿足您的需求。
圖1–多個手動配置的服務(wù)器
無服務(wù)器化的好處
1.收費:一個好處是,無服務(wù)器平臺傾向于根據(jù)無服務(wù)器功能運行的頻率和時間來收費,所以您只需要為所使用的計算時間付費。這可以在開發(fā)過程中保持較低的成本,同時以一種在發(fā)行過程中自動擴展的方式進行構(gòu)建。
2.快速響應(yīng):無服務(wù)器函數(shù)也傾向于快速響應(yīng)需求峰值,因為平臺會自動增加可用的計算能力來運行函數(shù),然后在負載減少時降低計算能力。這可以有效地利用資源,只在需要時部署計算能力。
3.語言選項:對各種編程語言都有很好的支持,所以您很可能可以用您選擇的語言構(gòu)建無服務(wù)器函數(shù)。例如,AWS Lambda本機支持Java、Go、PowerShell、Node.js、c#、Python和Ruby,并提供了一個運行時API來允許使用其他編程語言。Azure函數(shù)支持c#、Javascript、f#、Java、Powershell、Python和Typescript。
4.Bug預防:使用無服務(wù)器功能進行構(gòu)建必然會創(chuàng)建一個無狀態(tài)和無主機的系統(tǒng),這可以簡化對系統(tǒng)的推理,并防止一些關(guān)于狀態(tài)管理的復雜Bug。
5.數(shù)據(jù)管道:通過您的物聯(lián)網(wǎng)框架,您可以設(shè)置自動的、事件驅(qū)動的數(shù)據(jù)管道觸發(fā)器和數(shù)據(jù)庫存儲。通過附加的可視化框架或開發(fā)您的內(nèi)部儀表板,您可以立即監(jiān)視進度。
6.少花錢:如果你的VM運轉(zhuǎn)起來了,那么不管你是否充分利用了這些資源,還是它只是閑置著,你都要花錢。如果你的物聯(lián)網(wǎng)設(shè)備很少發(fā)送小的數(shù)據(jù)包,這就不是理想的,即使你有數(shù)千個設(shè)備不斷傳輸數(shù)據(jù),在包之間也會有很多空閑時間,這將是非常低效的。利用無服務(wù)器框架可以讓你只為你使用的東西付費,并且可以在不需要任何配置更改的情況下為你處理擴展——無論你有一臺設(shè)備還是一百萬臺設(shè)備。此外,如果您使用的是Azure,正如《荒野中的無服務(wù)器》一文中最初提出的那樣,通過讓它預測調(diào)用,您將能夠顯著減少冷啟動。
圖2–在無服務(wù)器平臺上運行的功能
無服務(wù)器化的弊端
1.更少的控制:使用無服務(wù)器平臺的一個缺點是,您對運行代碼的實例的控制更少,因為您無法控制底層硬件的配置。在無服務(wù)器環(huán)境中,對處理能力、內(nèi)存和處理時間的限制可能是一種局限,而在虛擬機中,您可以進行相當大的垂直擴展。
2.長延遲:另一個缺點是,由于平臺在需求高峰期間處理增加可用計算能力(即啟動更多虛擬機來運行功能),當用戶必須等待虛擬機啟動時,您對延遲的控制力度較低。這有時會導致第一次請求的長延遲,稱為“冷啟動延遲”,這可能是對延遲高度敏感的應(yīng)用程序中的一個問題,盡管這通常不是一個問題。
彈性結(jié)構(gòu)
網(wǎng)上有許多關(guān)于無服務(wù)器架構(gòu)的成本比較;我們發(fā)現(xiàn)媒體上的無服務(wù)器轉(zhuǎn)換和燃燒和尚的分析非常有幫助。無服務(wù)器架構(gòu)非常適用于物聯(lián)網(wǎng)解決方案,并且越來越受歡迎。隨著當今世界上數(shù)十億物聯(lián)網(wǎng)設(shè)備的使用,擁有一個彈性架構(gòu)對于快速投入生產(chǎn)至關(guān)重要。使用無服務(wù)器架構(gòu)構(gòu)建將讓您快速原型化,快速失敗,并從長遠來看擊敗您的競爭對手——只需注意所有的底層屬性,以便最大限度地利用您的資金。
作者:Jason Choi