3個有狀態應用程式的無伺服器開發策略 - Twain Taylor
無伺服器開發人員可以透過多種方式將無狀態函式連線到有狀態的資訊,同時不會給應用程式設計帶來延遲。
函式本質上是執行有限指定任務的獨立程式碼塊。例如,它們執行指令碼或將日誌資料從一個應用程式傳輸到另一個應用程式。無伺服器函式就像Java程式中的函式一樣,具有專用輸入和輸出,這意味著它們可以連線並形成一個鏈,其中一個函式的輸出是另一個函式的輸入。這有助於以分散式方式管理應用程式體系結構。
雖然函式即服務(FaaS)無伺服器設計適合基於事件的應用程式,但函式的短暫性質使其在實時和以資料為中心的應用程式環境中限制了無伺服器應用的開發。函式例項是易失性的,使用壽命為5到15分鐘。如果部署在純FaaS模型中,實時的雲原生工作負載則需要一種方法來每隔幾分鐘恢復應用程式的狀態。雖然應用程式可以在後端儲存這些無狀態函式的狀態,但無伺服器開發人員應該避免應用程式必須經常從儲存中載入狀態的情況。它成本高,導致延遲並影響網路請求的吞吐量。
函式和延遲
函式應該可以直接相互訪問。如果無法相互立即連線,函式依賴於慢速儲存介質將資料從一個函式傳輸到另一個函式,從而由此增加了延遲。在實時應用場景中 - 例如24/7監控系統 - 延遲卻是不可接受的。
無伺服器函式主要支援短期工作負載,這意味著資源在請求時分配給它們,並在請求結束後被帶走。在無伺服器函式上開發的有狀態應用程式無法使用傳統機制來工作,例如可以在整個應用程式的生命週期內儲存資料的全域性變數。無狀態函式不可能讀取和寫入磁碟,並且應用程式無法保持與資料庫的持續連線。
要建立有狀態應用程式,無伺服器開發人員可以使用資料庫連線,事件有效負載或後端即服務(BaaS)來管理應用程式狀態,以與應用程式整合。開發人員應該使用這些方法來充分利用無伺服器架構。正確完成後,他們管理應用程式狀態而不降低效能。
直接連線到資料庫
無伺服器開發人員可以將應用程式狀態儲存在資料庫中,然後將這些函式連線到資料庫以進行訪問。
在此設定中,開發人員必須擔心可伸縮性。為避免對資料庫造成壓力並確保頻繁且持續地訪問應用程式狀態,請遵循特定於其雲平臺的無伺服器供應商的資料庫連線指南,例如AWS Lambda到Amazon Relational Database Service。一開始就建立並儲存狀態,以避免不斷呼叫資料庫所產生的成本。
避免物件關係對映(ORM),即在兩個不相容的系統之間轉換資料的過程。ORM需要為應用程式中使用的每個函式提供單獨的模型,這隻會為無伺服器開發建立更多的非特徵程式碼。
資料庫事務成本高,而且擴充套件性不好。不使用事務併發和應用程式開發,而是使用外部連線池代理,例如Java資料庫連線(JDBC)驅動程式。雲供應商提供這些驅動程式,例如用於SQL Server的Microsoft JDBC驅動程式以連線到Azure SQL資料庫。第三方軟體產品(如Progress DataDirect)也可用作池化代理。
後端即服務連線
後端即服務是有狀態無伺服器開發的另一個主要機制。無伺服器函式使用無狀態HTTP API,BaaS透過抽象整個無伺服器架構和管理狀態來處理併發和效能等問題,而不管工作負載如何。可以透過一行程式碼在無伺服器函式內呼叫BaaS API,這樣可以保持應用程式程式碼庫的清潔,並使函式無狀態。BaaS選項包括Progress Kinvey和Google Firebase等。
相關文章
- SAP BSP應用有狀態和無狀態行為差異比較
- 利用無程式碼開發平臺開發應用程式有什麼好處
- Kubernetes 實戰——有狀態應用(StatefulSet)
- [譯] Flutter 中的原生應用程式狀態Flutter
- 程式的3種狀態
- “遷移策略+新容器執行時”應對有狀態應用的冷熱遷移挑戰
- NetApp使有狀態應用程式更易於在Kubernetes中完成APP
- Web3開發中的狀態同步Web
- ASP.NET Core 應用程式狀態ASP.NET
- SAP ABAP應用伺服器的HTTP響應狀態碼(Status Code)伺服器HTTP
- 系統設計架構:有狀態與無狀態架構
- 秘籍公開!如何監控無伺服器應用程式?伺服器
- HarmonyOS NEXT應用開發案例—狀態列顯隱變化
- 工作流從無狀態切換到有狀態的好處
- 422是一個HTTP狀態碼,表示伺服器理解客戶端的請求,但無法處理該請求。這個狀態碼通常被用於Web應用程式中的表單驗證,其中伺服器無法處理客戶端提交的表單資料。HTTP伺服器客戶端Web
- elasticsearch的開發應用(3)Elasticsearch
- 無伺服器會成為企業應用開發的下一個大事情嗎?伺服器
- [譯] 用 Flutter 開發你的第一個應用程式Flutter
- C#實現JWT無狀態驗證的實戰應用C#JWT
- [譯] 將 Kotlin 應用於現有 Java 程式碼的策略KotlinJava
- Flutter開發日記-資料傳遞/狀態管理的方式和應用Flutter
- Taro 小程式開發大型實戰(五):使用 Hooks 版的 Redux 實現應用狀態管理(下篇)HookRedux
- Taro 小程式開發大型實戰(四):使用 Hooks 版的 Redux 實現應用狀態管理(上篇)HookRedux
- 你知道無程式碼開發平臺可以開發哪些應用程式嗎
- TWAIN掃描識別控制元件:Web應用程式的掃描器SDKAI控制元件Web
- 合約量化交易對沖策略系統開發應用程式
- 什麼是無程式碼?無程式碼應用開發的12大好處!
- Angular Ngrx Store 應用程式狀態的一些典型例子Angular
- SAP Fiori和WebClient UI的有狀態和無狀態行為設計原理WebclientUI
- 直播軟體開發,同一分類下僅狀態列切換有無特效兩個版本特效
- 面試常問有關響應狀態碼3XX面試
- 【架構設計】無狀態狀態機在程式碼中的實踐架構
- 架構設計(五):有狀態服務和無狀態服務架構
- 從零開始入門 K8s | 有狀態應用編排 - StatefulSetK8S
- 最全的HTTP響應狀態碼列表:除了404,HTTP狀態碼還有啥?HTTP
- 探索FSM (有限狀態機)應用
- 伺服器狀態出錯情況有哪些?伺服器
- .NET 開發一個伺服器 應用管理工具伺服器