雲函數


雲函數提供了一種 直接在雲上運行,無狀態的、短暫的、由事件觸發的代碼 的能力。

 

雲函數與輕服務的關系

ServerLess,即無服務器架構,也叫輕服務,它包含兩個部分,如下:

  1. 函數即服務(FaaS: Function as a Service)

    函數即服務提供的是計算能力。原有的計算能力,無論是容器也好,虛擬機也好都承載在一定的操作系統之上,函數即服務把計算能力進行了進一步抽象,我們在后文再繼續進行展開。

  2. 后端及服務(BaaS: Backend as a Service)

    后端即服務,比如對象存儲,數據庫應用,緩存服務,我們也可以稱之為 Serverless,因為這些服務也能夠在雲上提供開通即服務,開通即使用的能力。在使用這些產品時同樣不需要關注它的服務器是什么樣的,它的服務器部署在哪里,而是服務開通就可以使用了,后面的運維工作都交給了雲,所以不用感知它的最底層服務器。

雲函數,就是 FaaS 模式的具體實現。同樣,對象存儲、數據庫應用、緩存服務等,是 BaaS 模式的具體實現。

對於輕服務,BaaS 和 Faas 缺一不可。

 

雲函數對比傳統服務

服務粒度

  • Monolith:單體應用
  • Microservice:微服務
  • Function:雲函數

一個單體應用可以按業務模塊拆分成多個微服務,一個微服務也可以按使用場景拆分成多個雲函數。比如一個廣告微服務,至少可以拆分出實時競價、展示計數、報表查詢等雲函數。也就是說,雲函數和微服務中的 API 是同一粒度的。但不同於 API,每個雲函數都是獨立部署,按需執行。

服務架構

 

雲函數的特點

  • 零運維 :不再需要管理底層資源的服務器
  • 秒級部署 :運行無狀態,輕易實現快速迭代
  • 自動觸發 :完全由事件觸發,空閑時沒有資源在運行
  • 聚焦代碼邏輯 :開發者只關心最核心的代碼片段,跳過復雜的、無聊的其他工作
  • 無窮彈性計算能力 :根據請求自動平行調整服務資源,擁有近乎無限的擴容能力

 

如何使用雲函數

微信雲函數功能的構成

  1. 邏輯代碼(目前只支持 js)==雲函數並非只能是一個函數,而是指以類函數的方式被外界調用執行的無狀態代碼段。可以有常量可以是多個函數,關鍵點在於無狀態,再進一步說,你的代碼是否符合無狀態,沒關系,雲函數的運行機制就是按照無狀態進行的==
  2. 觸發器:包含定時觸發、事件觸發(目前僅支持定時觸發)==什么是事件,API 網關觸發、客戶端調用 SDK 觸發,其它諸如 cos、cdn、mq==
  3. 設置項
    • 運行環境(目前只有 Nodejs 8.9)
    • 資源配置(根據指定的內存分配計算資源,CPU 按比例自動分配)
    • 超時時間(函數超過該時間仍未結束時,將會被強制中斷,不能大於 20s)
    • 環境變量(可以使用鍵/值對的形式定義可從函數代碼訪問的環境變量。增強雲函數的可定制性)
  4. 相關支持
    • 測試(即時在線測試,構造 Json 參數,獲取測試結果)
    • 日志(包含請求 ID,返回結果,運行時間,占用內存)
    • 監控(可以查看雲函數的調用次數、運行時間、錯誤次數)

 

常見使用架構

  • 一個雲函數處理一個任務,高度解耦

  • 嘗試將請求歸類,一個雲函數處理某一類的請求,比如有專門負責處理用戶的,或者專門處理支付的雲函數。

  • 只有一個雲函數,雲函數里有一個分派任務的路由管理,將不同的任務分配給不同的本地函數處理。也可以是分配給其它的雲函數或是其它執行單元。

 

什么場景可以用

理論上,只要符合下列條件,任何現有業務模塊都可以改造成雲函數的方式:

  • 觸發響應:雙向通信的場景,本質都可以用一方輪詢來解決。
  • 無狀態:所有的狀態,都可以下沉至 BaaS。

可以用 ≠ 適合用,需要衡量 -> 改造的代價 vs 雲函數帶來的收益。

 

什么場景適合用

  • 事件驅動及響應式架構
  • 流量突發場景
  • 請求對延時要求不高
  • 低頻請求
  • 單項任務資源要求低

資源搜索網站大全 https://www.renrenfan.com.cn 廣州VI設計公司https://www.houdianzi.com

為什么要用雲函數

微信雲函數使用的痛點

  1. 報錯信息不夠友好;
  2. 開發者不能設置閾值從而自動伸縮;
  3. 觸發器不夠豐富。

使用雲函數的好處

  1. 簡單易用:自動並快速擴縮容;
  2. 穩定可靠:高可用部署、與其他計算服務結合使服務更健壯;
  3. 高效開發:加速開發,簡化運維;
  4. 節省成本:不需為空閑資源付費;
  5. 簡化管理:可視化管理、簡化安全配置。

使用雲函數的缺陷

==// 缺陷,不包含雲函數在不合適的場景下應用帶來的問題==

==// 列出來的是圍繞着其本身可能在使用時把控不好的地方==

  1. 需要對業務進行很細粒度的拆分,難以進行或成本太高;
  2. 延遲較高,特別是一定時間間隔后的第一次訪問;
  3. 對第三方服務依賴過高。

由於這些局限性,Serverless 架構不會成為復雜應用的架構首選,相反,它應該是后端小程序的未來。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM