「無服務器架構」openwhisk 通用使用案例

OpenWhisk提供的執行模型支持各種用例。以下各節包括典型示例。有關無服務器體系結構,示例用例,優缺點討論和實現最佳實踐的更詳細討論,請閱讀Martin Fowler博客上的Mike Roberts優秀文章。

微服務


儘管具有微服務的優勢,基於微服務的解決方案仍然難以使用主流的雲技術來構建,通常需要控制複雜的工具鏈以及獨立的構建和運營管道。小型而敏捷的團隊花費大量時間來處理基礎架構和操作複雜性(容錯,負載平衡,自動縮放和日誌記錄),尤其希望使用一種方式來開發精簡的,增值的代碼,這些代碼已經使用了已知的編程語言。愛,最適合解決特定問題。

OpenWhisk具有模塊化和固有的可伸縮性,因此非常適合在操作中實現細粒度的邏輯。 OpenWhisk動作彼此獨立,可以使用OpenWhisk支持的多種不同語言來實現,並可以訪問各種後端系統。每個動作都可以獨立部署和管理,並且可以獨立於其他動作進行擴展。 OpenWhisk以規則,序列和命名約定的形式提供動作之間的互連性。這對於基於微服務的應用程序來說是個好兆頭。

Web應用


儘管OpenWhisk最初是為基於事件的編程而設計的,但它為面向用戶的應用程序提供了許多好處。例如,將其與較小的Node.js存根結合使用時,可以使用它為相對容易調試的應用程序提供服務。而且,由於與在PaaS平臺上運行服務器進程相比,OpenWhisk應用程序的計算強度要​​低得多,因此它們的價格也要便宜得多。

可以使用OpenWhisk構建和運行完整的Web應用程序。將無服務器API與用於站點資源的靜態文件託管相結合,例如HTML,JavaScript和CSS意味著我們可以構建整個無服務器的Web應用程序。與站起來並操作Node.js Express或其他傳統服務器運行時相比,操作託管OpenWhisk環境的簡單性(或者因為它託管在IBM Cloud上而根本不需要操作任何東西)是一個巨大的好處。

其中一項有用的功能是使用OpenWhisk CLI wsk工具(稱為“ --annotation web-export true”)的選項,該工具可從Web瀏覽器訪問代碼。

以下是一些有關如何使用OpenWhisk構建Web應用程序的示例:

Web操作:具有OpenWhisk的無服務器Web應用程序。
使用IBM Cloud Functions和Node.js構建面向用戶的OpenWhisk應用程序
使用OpenWhisk的無服務器HTTP處理程序

Web Actions: Serverless Web Apps with OpenWhisk.Build a user-facing OpenWhisk application with IBM Cloud Functions and Node.jsServerless HTTP handlers with OpenWhisk


物聯網


當然可以使用傳統的服務器架構來實現物聯網應用,但是在許多情況下,不同服務和數據橋的結合需要高性能和靈活的管道,從物聯網設備到雲存儲和分析平臺。通常,預配置的網橋缺乏實現和微調特定解決方案體系結構所需的可編程性。鑑於可能的管道種類繁多,並且一般而言,尤其是在IoT中,圍繞數據融合的問題缺乏標準化,因此在許多情況下,管道需要自定義數據轉換(用於格式轉換,過濾,擴充等)。 OpenWhisk是一種出色的工具,可以以“無服務器”方式實現這種轉換,其中自定義邏輯託管在完全託管且具有彈性的雲平臺上。

物聯網場景通常固有地是傳感器驅動的。例如,如果需要對超過特定溫度的傳感器做出反應,則可能會觸發OpenWhisk中的操作。物聯網交互通常是無狀態的,在發生重大事件(自然災害,重大天氣事件,交通擁堵等)的情況下,可能會產生非常高的負載水平。這產生了對彈性系統的需求,該系統的正常工作量可能很小,但需要具有可預測的響應時間,能夠迅速擴展,並且能夠處理大量事件,而無需事先向系統發出警告。使用傳統的服務器體系結構來構建滿足這些要求的系統非常困難,因為它們要麼功率不足,無法處理流量高峰,要麼配置過度且極其昂貴。

這是一個使用OpenWhisk,NodeRed,Cognitive和其他服務的示例IoT應用程序:使用OpenWhisk對IoT實時數據進行無服務器轉換。

「無服務器架構」openwhisk 通用使用案例

API後端


無服務器計算平臺為開發人員提供了一種無需服務器即可快速構建API的方法。 OpenWhisk支持自動生成用於操作的REST API,並且很容易將您選擇的API管理工具(例如IBM API Connect或其他)連接到OpenWhisk提供的這些REST API。與其他用例相似,適用於可伸縮性和所有其他服務質量(QoS)的所有注意事項。

這是使用Serverless作為API後端的示例和討論。

移動後端


許多移動應用程序需要服務器端邏輯。對於不想管理服務器端邏輯而寧願專注於設備或瀏覽器上運行的應用程序的移動開發人員,使用OpenWhisk作為服務器端後端是一個很好的解決方案。此外,對Swift的內置支持使開發人員可以重用其現有的iOS編程技能。移動應用程序通常具有不可預測的負載模式,並且託管的OpenWhisk解決方案(例如IBM Cloud Functions)可以擴展以滿足幾乎任何工作負載需求,而無需提前配置資源。

數據處理


由於現在可用的數據量很大,因此應用程序開發需要具有處理新數據並可能對其做出反應的能力。此要求包括處理結構化數據庫記錄以及非結構化文檔,圖像或視頻。可以通過提供的系統或自定義提要來配置OpenWhisk,以對數據更改做出反應並自動對傳入的數據提要執行操作。可以對動作進行編程以處理更改,轉換數據格式,發送和接收消息,調用其他動作,更新各種數據存儲,包括基於SQL的關係數據庫,內存中的數據網格,NoSQL數據庫,文件,消息傳遞代理和各種其他系統。 OpenWhisk規則和序列提供了無需編程即可靈活地更改處理管道的靈活性-只需通過配置更改即可。這使得基於OpenWhisk的系統具有高度的靈活性,並易於適應不斷變化的需求。

認知應用


認知技術可以與OpenWhisk有效結合,以創建功能強大的應用程序。例如,IBM Alchemy API和Watson Visual Recognition可與OpenWhisk一起使用,以自動從視頻中提取有用的信息,而無需實際觀看。

這是一個示例應用程序Dark vision,它就是這樣做的。在此應用程序中,用戶使用Dark Vision Web應用程序上載視頻或圖像,該應用程序將其存儲在Cloudant DB中。視頻上傳後,OpenWhisk通過聽Cloudant更改(觸發)來檢測新視頻。然後,OpenWhisk觸發視頻提取器操作。在執行過程中,提取器將生成幀(圖像)並將其存儲在Cloudant中。然後使用Watson Visual Recognition處理幀,並將結果存儲在同一Cloudant DB中。可以使用Dark Vision Web應用程序或iOS應用程序查看結果。除Cloudant外,還可以使用對象存儲。這樣做時,視頻和圖像元數據存儲在Cloudant中,媒體文件存儲在對象存儲中。

原文:https://github.com/apache/openwhisk/blob/master/docs/use_cases.md

本文:http://jiagoushi.pro/openwhisk-common-use-cases

討論:請加入知識星球【首席架構師圈】或者微信圈子【首席架構師圈】


分享到:


相關文章: