OpenFaaS 101 - 4:Design & Architecture

掌握了hello world之後,就來看看OpenFaaS架構

Overview

在這裏插入圖片描述

如上圖,OpenFaaS在架構上,屬於承上啓下的第二層,需要部署在k8s上,同時需要container registry存儲image;也需要NATS負責異步處理,Prometheus負責收集metrics,同時負責擴容

在這裏插入圖片描述

workflow上看:

  • OpenFaaS Gateway負責處理所有request (svc/func的route是自動生成的,當然也可以自定義)
  • Prometheus通過Gateway收集各種metrics,同時結合AlertManager,來判斷是否需要擴容和縮容
  • 直接/function/name是同步執行func,/async-function/name則是藉助NATS實現異步執行func (可以自定義callback url)

OpenFaaS WatchDog

watchdog的主要任務是:啓動監控各個function;它相當於一個 init process,內置了一個Go寫的Http Server

在這裏插入圖片描述

Auto-scalling

Auto-scalling功能使得function根據不通metrics來進行擴容和縮容

  • QPS + AlertManager: AlertManager通過讀取Permethues metrics,判斷是否apply rule觸發擴容和縮容
  • CPU/Memory Utilization + k8s HPA: 也可以不使用AlertManager;利用k8s HPA 可以通過判斷pod的CPU和Memory的利用率來做擴縮容

此外值得提一點的是,如果function長時間沒有任何request,function instance的數量就會變爲0 (down to zero replica),在openfaas裏叫做idlingfaas-idler就是專門幹這個的,當然直接調用API也可以

🤔 值得考慮OpenFaaS或者Serverless嗎?

繼續深入之前,有個問題擺在面前;就是,真的值得將現有App遷移到 Serverless 上嗎?到底什麼場景適合使用OpenFaas?

我理解是,只有那些小型不復雜,且依賴(內部/外部)較小,且對 server load 沒嚴格認識或要求 (擴縮容甚至0 request)的backend項目,纔可以嘗試…

比如說各種小程序後臺,數據處理,甚至機器學習的模型API…

這裏先給自己立個flag,下一篇,嘗試一下使用OpenFaaS部署機器學習模型,並expose api

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