微軟Azure再升級,為無服務(wù)器事件而生的Event Grid
譯文【51CTO.com快譯】微軟Event Grid無疑是對無服務(wù)器選項的一大重要補充,可提供一套可構(gòu)建大規(guī)模分布式應(yīng)用程序的后臺,且將管理與編排工作量控制在***水平。另外,也為微軟的無服務(wù)器工具提供了一套事件路由結(jié)構(gòu),從而簡化其它Azure服務(wù)以及外部來源的相關(guān)事件訂閱機制。
無服務(wù)器計算作為現(xiàn)代云應(yīng)用架構(gòu)的基礎(chǔ),具有擺脫底層基礎(chǔ)設(shè)施——甚至是網(wǎng)絡(luò)因素——以減少應(yīng)用編排工具管理負(fù)擔(dān)等優(yōu)勢。但微軟Auzre Functions這類無服務(wù)器模式本身就存在局限性,即要求以響應(yīng)事件的方式啟動。如果未收到信號,則不會啟動。
Azure事件使用方法
那么我們該如何捕捉事件?傳統(tǒng)事件隊列隸屬于分布式體系架構(gòu),但其問題在于往往難以確保事件的正確傳送。在理想情況下,信息應(yīng)符合冪等要求,即進(jìn)行且僅進(jìn)行一次傳送以保證交付。但這在實際場景中難以實現(xiàn),因此大家必須采用相應(yīng)的系統(tǒng)來完成這項任務(wù)。如此一來,我們即可利用后端代碼清理日志并存儲數(shù)據(jù),并利用事件與消息ID來標(biāo)記重復(fù)內(nèi)容。
利用Event Grid,微軟方面建立起一套發(fā)布與訂閱系統(tǒng),并與其它Azure服務(wù)通知機制集成起來。現(xiàn)在各事件成為一級對象,而Event Grid配置可實現(xiàn)事件過濾并將其定向至正確的服務(wù)。憑借著可擴展性,也能夠?qū)雍唵渭軜?gòu)以及包含數(shù)千個來源的復(fù)雜環(huán)境。
簡單來講,Event Grid是一款負(fù)責(zé)將Azure內(nèi)各來源的事件通知路由至Azure Functions的工具。其能夠?qū)zure環(huán)境轉(zhuǎn)化為通知體系,而且與傳統(tǒng)服務(wù)總線不同,Event Grid中不存在傳統(tǒng)工作流模式:當(dāng)某一事件發(fā)生時,會啟動對應(yīng)的函數(shù),并觸發(fā)與之相關(guān)的應(yīng)用。
在應(yīng)用程序中使用Event Grid
Event Grid最初只支持部分Azure服務(wù),包括來自各基礎(chǔ)設(shè)施服務(wù)(例如Event Hubs)以及Azure訂閱的通知。而最為有趣的是,大家可以將Event Grid與Azure Functions捆綁起來以共同配合其它服務(wù)。例如,微軟允許大家在blob存儲容器當(dāng)中使用事件以觸發(fā)對應(yīng)Azure函數(shù),用以在每一次圖片上傳時運行機器學(xué)習(xí)支持型圖像識別。
通過上述實例,可以看到其最重要的能力是將原本松散耦合的各項操作聚合在一起。無需整體應(yīng)用,您只需要上傳服務(wù)以及圖像分析功能即可。這種關(guān)聯(lián)由您的Azure存儲帳戶提供,意味著當(dāng)圖像被上傳至指定的blob容器時,相關(guān)事件會被傳送至Event Grid。此后,Event Grid利用過濾機制獲取特定消息,并將其作為輸入內(nèi)容傳遞給某一函數(shù)——即剛剛上傳完成的圖片文件的鏈接。
這種能力相信能夠得到大家的廣泛青睞,特別是對于希望將Azure作為自主平臺即服務(wù)應(yīng)用構(gòu)建工具的用戶。利用Event Grid配合Azure Functions,您不再需要管理大量事件處理程序以支持無服務(wù)器代碼。相反,各函數(shù)會在事件符合條件時自行觸發(fā),并在處理完成后被丟棄。
另外,現(xiàn)有Azure服務(wù)(例如Logic Apps)使用大量計算資源進(jìn)行事件輪詢。但Event Grid能夠有效克服這一問題。隨著服務(wù)被遷移至Event Grid當(dāng)中,相關(guān)執(zhí)行效率將得到顯著提升,進(jìn)而降低計算需求以及應(yīng)用支持成本。
將Event Grid納入新的無服務(wù)器容器化Azure
憑借著Logic Apps與Flow,微軟的無服務(wù)器模式不再局限于Auzre之內(nèi)。這意味著大家可以利用Event Grid觸發(fā)Flow操作,將來自電子商務(wù)應(yīng)用的饋送信息轉(zhuǎn)發(fā)至Dynamics 365,從而根據(jù)實時情況更新客戶記錄或快速為特定客戶提供產(chǎn)品報價。另外,大家也可以在Azure的物聯(lián)網(wǎng)平臺內(nèi)使用Event Hubs以實現(xiàn)物聯(lián)網(wǎng)設(shè)備事件推送——這不僅能夠快速根據(jù)需求實現(xiàn)數(shù)據(jù)推送,同時也可節(jié)約傳輸帶寬并避免因物聯(lián)網(wǎng)中樞架構(gòu)過于復(fù)雜而導(dǎo)致的高成本問題。
作為微軟無服務(wù)器模式的核心方案,大家可以利用Azure Functions構(gòu)建起理想的應(yīng)用體系——通過Event Grid從Azure服務(wù)處獲取數(shù)據(jù)源,觸發(fā)函數(shù)而后利用Azure容器實例API啟動負(fù)責(zé)運行復(fù)雜服務(wù)的容器,從而將數(shù)據(jù)處理與底層事件觸發(fā)機制關(guān)聯(lián)起來。這意味著用戶將不再需要由Kubernets實現(xiàn)的容器資源編排機制。利用這類架構(gòu),您不再需要建立昂貴的***性虛擬基礎(chǔ)設(shè)施,而僅在服務(wù)運行時支付開銷。
而著眼于未來,也許無基礎(chǔ)設(shè)施應(yīng)用將進(jìn)一步取代無服務(wù)器應(yīng)用,成為這場升級之旅的最終目標(biāo)。
【51CTO譯稿,合作站點轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】