最熱開源無服務器函數:五大Fission架構參考

“無服務器”現在是極具誘惑的技術趨勢,沒有什麼比管理服務器更讓人痛苦。亞馬遜、微軟和谷歌都在雲中提供無服務器專有接口。相較於這些雲供應商的商業化產品,開源無服務器架構可免於被雲廠商鎖定,但要以犧牲雲便利性和易用性爲代價。

近一年,Fission熱度頗高。簡單來講,Fission是一個構建在Kubernetes之上的FaaS或Serverless函數框架。Fission使用配有動態裝載器的標準容器把Kubernetes與內部容器聯繫在一起,所使用的功能被放置於適當的標準容器中,並被加載以回答容器內Web服務器查詢。

因爲其靈活且不會被鎖定到特定雲提供商,Fission已被應用到多個行業,本文將介紹五大行業常見用例的Fission架構設計模式。

參考架構1:物聯網(IoT)

從工業互聯網到可穿戴設備再到智能汽車,一系列物理設備(傳感器、執行器,智能設備和可穿戴設備…)收集各種類型數據,並與數據中心內運行的應用程序進行通信。通常,數據使用網關聚合,然後發送到可分析這些變量的平臺以獲取業務洞察(性能、趨勢、觸發事件等)。

物聯網應用程序中的整體流程可使用Fission編排:

  1. 使用網關聚合數據,並將其發送到在Kubernetes上託管運行的Kafka服務器集羣消息隊列;
  2. 基於整個管道流程調用Fission函數:
  • 對於放置在消息隊列中的給定文件,文件內容將傳遞到Fission函數,該函數首先對其標準化以提取感興趣的變量,然後將輸出發送到NoSQL數據庫或文件系統;
  • 第二個函數將運行以響應NoSQL數據庫中的標準化文件。該函數將讀取文件內容,根據需要執行計算(基於用例),調用執行功能的微服務,例如將數據發送到Data Lake或Data Mart以進一步分析;
  • 可以爲事件流中任何類型的處理操作編寫分支函數,FaaS可根據數據量按比例放大或縮小。

參考架構2:金融服務(支付處理,風險計算等)

金融服務行業可以使用基於Fission的無服務器架構實時處理支付請求、執行合規性檢查和風險度量等關鍵任務。
金融應用程序中的整體流程可以使用Fission編排:

  1. 開發人員將Fission部署爲跨多個應用程序的共享功能,這些程序是支付處理網關前端,可處理用戶身份驗證、註冊和支付相關數據收集;
  2. 系統將後端與存放交易數據的數據庫進行連接;
  3. 創建Fission函數以解析具有以下變量的給定輸入數據流:用戶信用卡數據、交易位置、其它用戶信息等。
  • 第一個函數調用欺詐檢測API,並根據檢查結果將數據保存到內存數據網格中;
  • 無論檢查通過還是失敗,均調用第二組函數。如果檢查通過,則該函數批准付款並向用戶發送確認;
  • 如果懷疑付款存在欺詐性,則會調用另一個函數向後端欺詐檢測系統發出告警。

參考架構3:Web應用程序擴充

絕大多數企業應用都是三層Web程序,這些應用是業務後臺及技術任務(如備份、告警、數據收集)的接口。新興模式是用無服務器Fission函數來處理這些任務,而不影響單片n層應用程序的開發和部署。
Web應用程序擴充的總體流程可以使用Fission函數編排:

  1. 業務用戶繼續與(傳統)應用程序連接,但可以利用Fission函數提供的增強功能;
  2. 爲一系列計算和數據處理任務創建新功能;
  3. 主要應用程序觸發這些功能,因爲需要機會性執行;
  4. Dedicated函數執行所描述的適當邏輯,如果需要,嚮應用程序報告。

這可以被視爲將傳統應用程序重構或分解爲微服務的好方法,或者輕鬆添加不依賴“mother ship”開發和發佈過程的附加功能。

參考架構4:傳統系統改造

諸如大型機和n層應用之類的傳統系統在銀行、保險、零售等行業普遍存在並且根深蒂固。由於複雜性、業務依賴性、重構需要大量時間和精力以及這些系統仍然表現良好且具有成熟的使用模式等事實,企業不可能簡單撕掉和替換這些系統。爲了確保與現代服務(如Web和移動應用程序)的互操作性,Fission函數可以圍繞這些系統提供基於標準的API包裝器。

例如:

  1. 請求被髮送到API網關,API網關執行基本轉換並根據請求端點需要調用Fission函數;
  2. 函數接收輸入數據(例如JSON)並將其轉換爲終端系統可處理的格式,然後調用(傳統)業務系統;
  3. 一旦系統響應,函數可獲取並將其轉換爲源系統理解的格式,再使用適當的響應調用API網關。

參考架構5:使用Apache Spark進行機器學習

對於大多數公司而言,機器學習和預測分析通常針對組織內的特定項目。爲了實現機器學習的真正價值,跨應用共享數據、算法和模型是有利的。Fission可以與Apache Spark等技術結合,提供最終用戶或應用程序所使用的流處理和趨勢預測數據。

使用Fission和Apache Spark編排機器學習應用整體流程:

  1. 業務運營數據實時提取到基於Kafka的消息隊列集羣;
  2. Spark Streaming以微批方式獲取數據,通常基於時間窗口。此數據存儲在數據湖中以進行批處理分析,併發送到Spark MlLib運行時,其中存儲了不同的預測模型;
  3. 這些模型基於在Spark上運行的通用ML算法,比如有監督和無監督算法 ,聚類、分類算法等;
  4. 一旦將模型結果寫入NoSQL數據庫或內存數據網格,就會觸發Fission函數;
  5. Fission函數執行一系列關鍵業務功能,例如,更新業務分析儀表板,發送實時服務等。

結論

無服務器正在成爲繼Kubernetes之後最熱門的趨勢之一,開源無服務器解決方案使用高度靈活的技術,基於標準PaaS平臺解決行業面臨的業務挑戰,並可在本地和任意公有云運行。但是,與其他新技術一樣,無服務器仍然存在一些問題,比如可擴展性、生態系統集成等,如何合理搭建成爲技術人員需要思考的重要問題。

參考鏈接:https://dzone.com/articles/what-is-serverless-part-5-reference-architectures

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章