天天看點

微軟Azure再更新,為無伺服器事件而生的Event Grid

微軟Event Grid無疑是對無伺服器選項的一大重要補充,可提供一套可建構大規模分布式應用程式的背景,且将管理與編排工作量控制在最低水準。另外,也為微軟的無伺服器工具提供了一套事件路由結構,進而簡化其它Azure服務以及外部來源的相關事件訂閱機制。

<a href="http://s5.51cto.com/wyfs02/M01/9F/8B/wKioL1meb17R2CHGAAFlLxM4bzU047.jpg-wh_651x-s_3343651965.jpg" target="_blank"></a>

無伺服器計算作為現代雲應用架構的基礎,具有擺脫底層基礎設施——甚至是網絡因素——以減少應用編排工具管理負擔等優勢。但微軟Auzre Functions這類無伺服器模式本身就存在局限性,即要求以響應事件的方式啟動。如果未收到信号,則不會啟動。

Azure事件使用方法

那麼我們該如何捕捉事件?傳統事件隊列隸屬于分布式體系架構,但其問題在于往往難以確定事件的正确傳送。在理想情況下,資訊應符合幂等要求,即進行且僅進行一次傳送以保證傳遞。但這在實際場景中難以實作,是以大家必須采用相應的系統來完成這項任務。如此一來,我們即可利用後端代碼清理日志并存儲資料,并利用事件與消息ID來标記重複内容。

利用Event Grid,微軟方面建立起一套釋出與訂閱系統,并與其它Azure服務通知機制內建起來。現在各事件成為一級對象,而Event Grid配置可實作事件過濾并将其定向至正确的服務。憑借着可擴充性,也能夠對接簡單架構以及包含數千個來源的複雜環境。

簡單來講,Event Grid是一款負責将Azure内各來源的事件通知路由至Azure Functions的工具。其能夠将Azure環境轉化為通知體系,而且與傳統服務總線不同,Event Grid中不存在傳統工作流模式:當某一事件發生時,會啟動對應的函數,并觸發與之相關的應用。

在應用程式中使用Event Grid

Event Grid最初隻支援部分Azure服務,包括來自各基礎設施服務(例如Event Hubs)以及Azure訂閱的通知。而最為有趣的是,大家可以将Event Grid與Azure Functions捆綁起來以共同配合其它服務。例如,微軟允許大家在blob存儲容器當中使用事件以觸發對應Azure函數,用以在每一次圖檔上傳時運作機器學習支援型圖像識别。

通過上述執行個體,可以看到其最重要的能力是将原本松散耦合的各項操作聚合在一起。無需整體應用,您隻需要上傳服務以及圖像分析功能即可。這種關聯由您的Azure存儲帳戶提供,意味着當圖像被上傳至指定的blob容器時,相關事件會被傳送至Event Grid。此後,Event Grid利用過濾機制擷取特定消息,并将其作為輸入内容傳遞給某一函數——即剛剛上傳完成的圖檔檔案的連結。

這種能力相信能夠得到大家的廣泛青睐,特别是對于希望将Azure作為自主平台即服務應用建構工具的使用者。利用Event Grid配合Azure Functions,您不再需要管理大量事件處理程式以支援無伺服器代碼。相反,各函數會在事件符合條件時自行觸發,并在處理完成後被丢棄。

另外,現有Azure服務(例如Logic Apps)使用大量計算資源進行事件輪詢。但Event Grid能夠有效克服這一問題。随着服務被遷移至Event Grid當中,相關執行效率将得到顯著提升,進而降低計算需求以及應用支援成本。

将Event Grid納入新的無伺服器容器化Azure

憑借着Logic Apps與Flow,微軟的無伺服器模式不再局限于Auzre之内。這意味着大家可以利用Event Grid觸發Flow操作,将來自電子商務應用的饋送資訊轉發至Dynamics 365,進而根據實時情況更新客戶記錄或快速為特定客戶提供産品報價。另外,大家也可以在Azure的物聯網平台内使用Event Hubs以實作物聯網裝置事件推送——這不僅能夠快速根據需求實作資料推送,同時也可節約傳輸帶寬并避免因物聯網中樞架構過于複雜而導緻的高成本問題。

作為微軟無伺服器模式的核心方案,大家可以利用Azure Functions建構起理想的應用體系——通過Event Grid從Azure服務處擷取資料源,觸發函數而後利用Azure容器執行個體API啟動負責運作複雜服務的容器,進而将資料處理與底層事件觸發機制關聯起來。這意味着使用者将不再需要由Kubernets實作的容器資源編排機制。利用這類架構,您不再需要建立昂貴的永久性虛拟基礎設施,而僅在服務運作時支付開銷。

而着眼于未來,也許無基礎設施應用将進一步取代無伺服器應用,成為這場更新之旅的最終目标。 

本文作者:核子可樂譯

來源:51CTO

繼續閱讀