微軟公司于近期發布了Azure Functions以支持AWS Lambda。本文將介紹如何開始使用這個事件驅動服務,以及這項服務是否適合您。
無論是超大規模云供應商、軟件開放人員還是企業管理員,目前最熱門的技術之一就是無服務器計算。也就是所謂的功能即服務,這些事件驅動的服務可允許企業用戶在不需要提供虛擬機或容器集群的情況下完成應用程序代碼部署,而由另一個云服務來通過所選定的觸發事件。
云功能是平臺即服務(PaaS)的一個自然延伸。這些云端功能不僅能夠讓云管理人員和開發人員免于受到服務器與存儲設備等細節問題的影響,而且完全可以從底層運行時基礎設施和操作系統中抽取代碼執行。相關功能響應外部觸發事件而運行,所以它們最適合用于使用微服務和事件驅動組件的部署,而不是那些持久性的長期運行應用程序。
從2014年開始,亞馬遜網絡服務就開始通過Lambda來推廣無服務器模式,但是包括谷歌、IBM和微軟在內的其他云供應商們已經推出了功能即服務產品。微軟公司于去年11月發布的服務被稱為Azure Functions。
微軟Azure Functions 101
微軟的Azure Functions是基于在Azure App Service PaaS中使用的WebJobs軟件開發工具包的。這將有助于用戶將應用或腳本程序作為web或移動應用的一部分來運行,或者甚至將其公開作為可調用的API。因此,微軟Azure Functions可以使用WebJobs的功能,從而更容易地使用Azure Storage和Azure Service Bus(后者是一個發布與訂閱的消息隊列)。
功能包括了用所支持語言開發的執行邏輯部分與描述功能綁定的JSON配置文件,例如名稱、數據類型以及綁定是發送還是接收數據。
作為一個事件驅動的服務,微軟Azure Functions非常適合處理數據,其中涉及內容包括了從物聯網(IoT)設備、開發微服務、開發集成其他代碼模塊或云服務,或者API開發。以下Azure事件或服務可觸發相關功能:
存儲blob活動,例如在容器中添加或更改數據;
事件樞紐活動,例如用于IoT的流數據;
網絡事件,例如HTTP請求或webhooks;
Azure Service Bus,以及
計劃事件的計時器,類似于Cron job。
微軟Azure Functions還可與以下Azure和第三方發布事件的觸發器集成:
Azure DocumentDB
Azure事件中心
Azure移動應用程序
Azure通知中心
Azure Service Bus,包括可想Service Bus隊列發布消息的內部部署服務
Azure Storage
通過webhooks的GitHub
Twilio
一個可說明無服務器設計的簡單示例是使用微軟Azure Functions來響應和處理網絡表單。不同于讓網絡服務始終處于運行狀態并等待處理用戶輸入,Azure Functions是按照命令執行任務。一旦激活后,該功能可以顯示存儲在Azure blob中的若干表單中的一個,處理已提交的字段并將處理結果保存在SQL或非SQL數據庫中。
與AWS Lambda比較
微軟Azure Functions與其他無服務器產品類似,特別是AWS Lambda。但是它們之間還是有著重大的區別,具體包括:
處理持久性數據的方法:兩種服務都使用了無狀態容器作為執行機制,但是微軟Azure Functions還可以在Azure App Service應用程序環境中運行,這個環境配有專用虛擬機可讓用戶存儲不同執行之間的狀態。
每個云服務支持的事件源:有關最新支持列表,請參閱Lambda和微軟 Azure Functions的開發人員文檔。
定價模式:兩家廠商都是根據總執行時間和功能請求總數來綜合定價的。但是,具體細節是不同的。請務必查看Lambda 和 Functions 在它們各自網站上的最新費率信息 。
無服務器建議
由于無服務器功能是一個新概念,企業用戶仍然會采取審慎的態度試用,以求找到正式引入使用的正確時機。Functions能夠與事件驅動程序一起運行,例如處理用戶輸入或響應異步消息隊列中的事件。如同通用PaaS一樣,Functions有助于用戶在幾乎不了解初始容量要求的情況下部署新的應用程序,但是期望使用量會隨著時間推移而發散、爆發和發展。
例如,消息隊列的常見用途是處理來自外部源的數據,例如在將物聯網數據保存至數據前對數據進行過濾和歸一化處理,以及上傳多媒體文件時壓縮或變更圖像或視頻文件的格式。企業用戶還可以使用Functions將Cron Jobs重新用于云端的批處理任務。