您現(xiàn)在的位置:首頁 >關(guān)于我們 >行業(yè)新聞 >微軟推出Azure Functions預(yù)覽版,涉足無服務(wù)器應(yīng)用領(lǐng)域

微軟推出Azure Functions預(yù)覽版,涉足無服務(wù)器應(yīng)用領(lǐng)域

時間:2016年4月18日

   在4月份舉行的Build大會上,微軟宣布了Azure Functions預(yù)覽版,這是一個根據(jù)需求運行代碼的服務(wù)。Azure Functions意味著微軟已經(jīng)進(jìn)入日益流行的、由Amazon、 Google、IBM等主導(dǎo)的事件驅(qū)動無服務(wù)器計算領(lǐng)域。

   Azure Functions讓開發(fā)人員可以發(fā)布基于外部觸發(fā)執(zhí)行的代碼,而不用考慮準(zhǔn)備計算或存儲資源。這些函數(shù)——使用C#、JavaScript、Bash、F#、PHP、PowerShell或PHP編寫——通常表現(xiàn)為短期異步任務(wù)。在一篇有關(guān)預(yù)覽版發(fā)布的博文中,微軟將“數(shù)據(jù)處理”作為發(fā)布這類服務(wù)的一個重要原因。

   數(shù)據(jù)無所不在。它在云端,在本地,并越來越多地擴展到聯(lián)網(wǎng)設(shè)備。組織正在努力發(fā)現(xiàn)那些數(shù)據(jù)的價值,要求他們的開發(fā)人員以高可擴展的解決方案作為回應(yīng),而方案的構(gòu)建時間表被空前地壓縮。這些方案通常需要開發(fā)人員實現(xiàn)按需或定時的批處理任務(wù),以協(xié)調(diào)事務(wù)、獲取和處理數(shù)據(jù),或者實時響應(yīng)事件。

   開發(fā)人員可以以多種方式觸發(fā)Azure Functions,包括HTTP調(diào)用、修改Azure隊列或Blob存儲以及通過cron調(diào)度。微軟指出,支持HTTP讓Azure Functions成為軟件即服務(wù)應(yīng)用發(fā)送的“網(wǎng)勾(webhook)”消息的理想接收者。

   微軟為Azure Functions提供了兩種托管選項:傳統(tǒng)的“應(yīng)用服務(wù)(App Service)”方案或新推出的“動態(tài)服務(wù)(Dynamic Service)”方案。這個選擇會影響到擴展性和成本。在應(yīng)用服務(wù)方案中,Azure Function運行在專用的虛擬機上,F(xiàn)unction可能會同其他運行在用戶賬戶下的應(yīng)用共享服務(wù)器。如果選擇了動態(tài)服務(wù)方案,那么Azure Function會跨多個應(yīng)用實例并行運行,而且這些實例可以根據(jù)使用情況自動縮放。在這個方案中,用戶只需為實例的執(zhí)行時間付費,而應(yīng)用服務(wù)方案的用戶需要為托管的虛擬機付費,不管使用情況如何。

   開發(fā)人員可以從起始模板或者從頭開始創(chuàng)建這些單一用途的函數(shù)。微軟提供了一個基于Web的開發(fā)環(huán)境,并且還提供了Git端點,允許開發(fā)人員使用GitHub、Bitbucket、Visual Studio Team Services、 Dropbox等進(jìn)行本地開發(fā)及持續(xù)集成。這個基于Web的IDE提供了特定于語言的語法格式化、代碼補全提示以及一些基本的測試工具。在函數(shù)的應(yīng)用設(shè)置中,用戶可以指定Azure Functions可以使用的內(nèi)存量(最大1536MB),是否應(yīng)用用戶身份驗證以及如何暴露服務(wù)元數(shù)據(jù)。

   基于像應(yīng)用服務(wù)和WebJobs這樣的已有Azure服務(wù),微軟用90天構(gòu)建出了Azure Functions。按照微軟的說法,簡潔是關(guān)鍵。他們引入了一個名為“綁定(bindings)”的特性,實現(xiàn)了Azure Function代碼同數(shù)據(jù)源或目的地的分離。

   借助Functions綁定,開發(fā)人員可以通過他們的Function很輕松地同其他數(shù)據(jù)源和服務(wù)進(jìn)行交互,而不必考慮數(shù)據(jù)如何流入及流出一個Function。綁定讓類似向隊列添加一條消息或者獲取一個Blob的任務(wù)同向Function輸出變量傳遞一個JSON或者從Function輸入變量讀取一個Blob一樣簡單。使用這項功能,開發(fā)人員需要對他們與之交互的底層服務(wù)有一點了解,以便后續(xù)可以簡單地切換到一個不同的服務(wù)。

   微軟并不是第一個引入無服務(wù)器計算模型的。雖然該服務(wù)聽上去與傳統(tǒng)的平臺即服務(wù)(PaaS)產(chǎn)品有點類似,但微軟聲稱,Azure Functions通過提供基于執(zhí)行的計費和基于需要的實例縮放擴展了PaaS的概念。Azure Functions更像

   Azure Functions在許多方面都不同于AWS Lambda,包括一個開源的運行時、更廣泛的語言支持及沒有執(zhí)行時間限制。技術(shù)專家兼AWS Lambda用戶Tom Maiaroto在一篇博文中比較了這兩個服務(wù),他認(rèn)為,“Azure Functions的底層結(jié)構(gòu)與Lambda有很大的不同”。

   一個“應(yīng)用服務(wù)”是一個容器或環(huán)境,可以運行一組Azure云函數(shù)。這與Lambda有很大的不同。實際上,這兩個服務(wù)是截然不同的。

   Lambdas是單獨組織的,而ACF在邏輯上分組成“應(yīng)用程序”。

   Azure更像是[EC2 Container Service]Tasks和Lambda的混合。例如,你可以在應(yīng)用服務(wù)上設(shè)置環(huán)境變量,然后在ACF中使用。AWS Lambda無法持久化環(huán)境變量,但ECS Tasks可以。

   整個的容器架構(gòu)不同。Lambdas會根據(jù)一個“冷請求(cold request)”準(zhǔn)備一個全新的容器,并(從zip文件)部署代碼。后續(xù)請求可以受益于容器重用,處理速度更快。不過,你需要了解的是,它沒有提供持久化,而且,使用Node.js Lambdas時需要注意變量作用域,因為容器會被重用。

   不過,ACF受冷/暖請求的影響較小。Azure仍會按需準(zhǔn)備資源,但文件不會“凍結(jié)”到存儲在某個地方的zip文件中。它們在Azure的WebJobs上運行。

   如果啟用,那么每個函數(shù)都會自動映射到一個HTTP端點。然而,使用Lambda,你必須分別配置API網(wǎng)關(guān)。API網(wǎng)關(guān)很好,但非常復(fù)雜耗時。此外,某些無服務(wù)器框架通過自動為Lambdas設(shè)置API來緩解這個痛點。微軟在UX方面得分了,因為你需要配置的東西少很多。

   Azure Functions在預(yù)覽期間是免費的,但之后微軟會根據(jù)計算利用率和每百萬請求收費。UX已經(jīng)在GitHub上開源,WebJobs SDK也是。接下來,微軟表示,他們將致力于支持更多的語言、本地開發(fā)選項及集成其他微軟服務(wù),如Azure服務(wù)總線。海騰數(shù)據(jù)中心服務(wù)器租用


Copyright© 2004-2020 河南海騰電子技術(shù)有限公司 版權(quán)所有   經(jīng)營性ICP/ISP證 備案號:B1-20180452   豫公網(wǎng)安備 41019702002018號    電子營業(yè)執(zhí)照