您現(xiàn)在的位置:首頁 >關(guān)于我們 >行業(yè)新聞 >微軟推出Azure Functions預(yù)覽版,涉足無服務(wù)器應(yīng)用領(lǐng)域
在4月份舉行的Build大會上,微軟宣布了Azure Functions預(yù)覽版,這是一個(gè)根據(jù)需求運(yùn)行代碼的服務(wù)。Azure Functions意味著微軟已經(jīng)進(jìn)入日益流行的、由Amazon、 Google、IBM等主導(dǎo)的事件驅(qū)動無服務(wù)器計(jì)算領(lǐng)域。
Azure Functions讓開發(fā)人員可以發(fā)布基于外部觸發(fā)執(zhí)行的代碼,而不用考慮準(zhǔn)備計(jì)算或存儲資源。這些函數(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存儲以及通過cron調(diào)度。微軟指出,支持HTTP讓Azure Functions成為軟件即服務(wù)應(yīng)用發(fā)送的“網(wǎng)勾(webhook)”消息的理想接收者。
微軟為Azure Functions提供了兩種托管選項(xiàng):傳統(tǒng)的“應(yīng)用服務(wù)(App Service)”方案或新推出的“動態(tài)服務(wù)(Dynamic Service)”方案。這個(gè)選擇會影響到擴(kuò)展性和成本。在應(yīng)用服務(wù)方案中,Azure Function運(yùn)行在專用的虛擬機(jī)上,F(xiàn)unction可能會同其他運(yùn)行在用戶賬戶下的應(yīng)用共享服務(wù)器。如果選擇了動態(tài)服務(wù)方案,那么Azure Function會跨多個(gè)應(yīng)用實(shí)例并行運(yùn)行,而且這些實(shí)例可以根據(jù)使用情況自動縮放。在這個(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ā)人員需要對他們與之交互的底層服務(wù)有一點(diǎn)了解,以便后續(xù)可以簡單地切換到一個(gè)不同的服務(wù)。
微軟并不是第一個(gè)引入無服務(wù)器計(jì)算模型的。雖然該服務(wù)聽上去與傳統(tǒng)的平臺即服務(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會根據(jù)一個(gè)“冷請求(cold request)”準(zhǔn)備一個(gè)全新的容器,并(從zip文件)部署代碼。后續(xù)請求可以受益于容器重用,處理速度更快。不過,你需要了解的是,它沒有提供持久化,而且,使用Node.js Lambdas時(shí)需要注意變量作用域,因?yàn)槿萜鲿恢赜谩?/p>
不過,ACF受冷/暖請求的影響較小。Azure仍會按需準(zhǔn)備資源,但文件不會“凍結(jié)”到存儲在某個(gè)地方的zip文件中。它們在Azure的WebJobs上運(yùn)行。
如果啟用,那么每個(gè)函數(shù)都會自動映射到一個(gè)HTTP端點(diǎn)。然而,使用Lambda,你必須分別配置API網(wǎng)關(guān)。API網(wǎng)關(guān)很好,但非常復(fù)雜耗時(shí)。此外,某些無服務(wù)器框架通過自動為Lambdas設(shè)置API來緩解這個(gè)痛點(diǎn)。微軟在UX方面得分了,因?yàn)槟阈枰渲玫臇|西少很多。
Azure Functions在預(yù)覽期間是免費(fèi)的,但之后微軟會根據(jù)計(jì)算利用率和每百萬請求收費(fèi)。UX已經(jīng)在GitHub上開源,WebJobs SDK也是。接下來,微軟表示,他們將致力于支持更多的語言、本地開發(fā)選項(xiàng)及集成其他微軟服務(wù),如Azure服務(wù)總線。海騰數(shù)據(jù)中心服務(wù)器租用
海騰公告海騰數(shù)據(jù)最新新聞公告
Copyright© 2004-2020 河南海騰電子技術(shù)有限公司 版權(quán)所有 經(jīng)營性ICP/ISP證 備案號:B1-20180452 豫公網(wǎng)安備 41019702002018號 電子營業(yè)執(zhí)照