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

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

時(shí)間:2016年4月18日

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

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

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

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

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

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

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

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

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

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

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

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

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

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

   不過,ACF受冷/暖請(qǐng)求的影響較小。Azure仍會(huì)按需準(zhǔn)備資源,但文件不會(huì)“凍結(jié)”到存儲(chǔ)在某個(gè)地方的zip文件中。它們?cè)贏zure的WebJobs上運(yùn)行。

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

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


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