Serverless是什麼html
Serverless中文譯爲「無服務器」,最先能夠追溯到2012年Ken Fromm發表的《Why The Future Of Software And Apps Is Serverless》,他描述了一種場景,從用戶本身維護的物理機,到IaaS,再到PaaS,計算模式的轉變並不會中止,在雲計算基礎設施成熟的狀況下應用程序能夠不須要考慮服務器的存在,無服務器計算讓開發者能夠在不考慮服務器的狀況下構建並運行應用程序和服務。前端
再到2016年,Mike Roberts在Martin Fowler的博客《Serverless Architectures》中,將Serverless架構分爲Backend as a Service(BaaS)和Functions as a Service(FaaS)。web
●BaaS也就是後端即服務,即應用架構由大量三方雲服務和API來組織,使應用中關於服務器的邏輯和狀態都由服務提供方來管理。好比典型的單頁應用(SPA)和移動APP這些富客戶端應用,先後端的交互主要以Rest API調用爲主,只須要調用服務提供方的API便可完成相應的功能,好比身份驗證、數據訪問等。json
●FaaS能夠被稱爲函數即服務,開發者能夠直接將服務側業務邏輯代碼部署、運行在第三方提供的無狀態計算容器中,開發者只需編寫業務代碼便可,無需關注服務器,且代碼的執行是由事件觸發的。後端
一個Serverless的應用就是這樣一個將BaaS和FaaS融合在一塊兒的應用,用戶關注於應用的業務邏輯代碼,以函數爲粒度將其運行在FaaS平臺上,並和BaaS三方服務整合在一塊兒,最後搭建一個完整的系統,整個過程徹底無需關注服務器。api
Serverless的優點服務器
1.無需管理服務器網絡
開發者只需關注應用的業務邏輯,而無需關注服務器的存在,下降業務接入門檻,快速上線,提升開發和運維效率。架構
2.靈活擴展、按需付費less
據Gartner和麥肯錫統計,全球的服務器CPU平均利用率只有6%到12%,大量應用的資源利用率是很是低下的,特別是對於負載波峯波谷明顯的應用。而Serverless能夠根據負載彈性伸縮,並按需付費,根據實際運行消耗的資源計費,且業務是以函數的粒度運行的,能夠充分利用碎片資源,極大地減少運做成本。
函數工做流FunctionGraph
上面簡單介紹了Serverless架構以及其優勢以後,咱們再介紹一下華爲雲的函數工做流(FunctionGraph,FGS)。
函數工做流(FunctionGraph,FGS)是一項基於事件驅動的函數託管計算服務,託管函數具有以毫秒級彈性伸縮、免運維、高可靠的方式運行。經過函數工做流,開發者無需配置和管理服務器,只需關注業務邏輯,編寫函數代碼,以無服務器的方式構建應用,便能開發出一個彈性高可用的後端系統,並按實際運行消耗的資源計費。極大地提升了開發和運維效率,減少了運做成本。
構建無服務器圖片鑑黃web應用
爲了讓你們對Serverless架構和函數工做流有更直觀的瞭解,接下來咱們將介紹如何經過函數工做流快速構建一個完整的無服務器的圖片鑑黃Web應用,以下圖,該應用接收用戶上傳的圖片,並對圖片進行分析,判斷是否爲色情圖片。點擊此處可免費體驗Demo
試想,若是咱們經過傳統的模式開發此應用,須要如何開發?
即便是基於如今的雲平臺,咱們也仍須要購買雲服務器,關注其規格、鏡像、網絡等各指標的選型和運維,而後在開發過程當中可能還須要考慮與其餘雲服務的集成使用問題,使代碼中耦合大量非業務代碼,而且服務器等資源也並不是是按需的,可能會形成大量多餘的費用。
如今咱們能夠經過函數工做流服務來快速構建這個系統,而且徹底無需關注服務器,且按需運行,如圖:
建立函數,在函數中調用華爲雲內容檢測服務提供的圖片鑑黃接口,實現圖片鑑黃功能,併爲該函數配置一個APIG觸發器,對外提供圖片鑑黃的API,從而構建出一個完整的圖片鑑黃無服務器後端。而後將Web頁面的靜態資源部署在對象存儲服務(OBS)中,用戶能夠直接從OBS訪問前端頁面。用戶上傳圖片時,頁面調用前面構建的圖片鑑黃API,他會自動觸發函數執行,而開發者編寫的函數只需實現接收到圖片以後如何處理圖片的邏輯(調用內容檢測服務服務)便可,最後將結果返回給前端頁面。至此,咱們就構建了一個完整的無服務器圖片鑑黃Web應用。
如今,咱們將介紹如何端到端地將此無服務器應用構建出來。
後端API搭建
進入函數工做流服務函數建立頁面,選擇圖片鑑黃模板。該模板已經提供了本應用中函數的代碼,按照代碼註釋中的指示建立函數以後,就成功搭建了本應用的後端系統,爲函數所建立的APIG觸發器會提供一個調用該後端函數的HTTP(s) API,供外部系統(如前端頁面)調用。
建立成功後API的URL能夠在函數詳情頁面的「觸發器」欄看到:
前端頁面搭建
前端的展現形式有不少,這裏咱們提供了一份前端代碼包供你們學習參考,能夠將此代碼包部署到OBS上,快速構建一個單頁Web應用(SPA)。而後調用上一步後端提供的接口,連通後端系統,完成整個無服務圖片鑑黃Web應用的構建。
1.下載代碼包並解壓
2.爲了讓前端頁面訪問您的函數,須要配置頁面Rest請求的URL。修改代碼包裏/functiongraph/assets/config/apis.json文件中checkImage的值,更改成上一步「後端API搭建」中建立的APIG觸發器URL,即您的後端API的訪問地址。
3.經過OBS託管前端頁面。進入對象存儲服務,建立一個OBS桶,將程序包文件逐個上傳至該桶中。由於文件比較多,咱們建議您下載 OBS Browser ,使用OBS Browser前,請先獲取訪問密鑰。
4.啓動網站。進入桶的靜態網站託管界面,單擊靜態網站託管,配置桶的默認首頁爲index.html
配置完成後,您就已經成功搭建了本案例的前端系統。您能夠經過obs提供的訪問地址訪問您的前端頁面,檢測圖片時,頁面會發送請求到您的函數。
總結
經過上面端到端構建一個完整的無服務器圖片鑑黃Web應用,咱們能夠發現Serverless的架構具備以下優勢:
1.無需關注任何服務器,只需關注核心業務邏輯,5分鐘快速構建後端系統並上線,極大地提升了開發效率。
2.函數運行隨業務量彈性伸縮,按需付費,當建立的函數沒有執行時,不計費。
3.能夠經過簡單的配置連通函數工做流和其它雲服務,甚至雲服務和雲服務,好比本例中只需建立一個APIG觸發器即可完成API網關和函數工做流的鏈接,而後在函數中調用內容檢測服務的鑑黃接口,那麼函數就像一個粘合劑同樣將兩個雲服務鏈接在一塊兒。