如何使用Akka Serverless製作電子商務應用?

banq發表於2021-11-16

Akka Serverless 是一種平臺即服務,它結合了 API 優先、無資料庫程式設計和無伺服器執行時。開發人員不必設定和調整資料庫、維護和供應伺服器、配置或執行計算叢集。開發人員唯一負責的是構建無伺服器服務。相比之下,Akka Serverless 提供了高階資料訪問模式,如CQRSEvent SourcingCRDT,開發人員無需學習如何實現這些概念。
 

Akka Serverless 的特點

  • 無資料庫

傳統上,包括狀態在內的所有資料都儲存在資料庫中。甚至需要訪問資料庫以檢索狀態,這可能會顯著增加延遲。這個問題已在 Akka serverless 中透過記憶體狀態解決,由持久儲存支援,從而減少以資料為中心的操作的延遲,並在需要時將資料帶到服務中。此功能還消除了在後端設定資料庫的需要,因為 Akka Serverless 可以處理其細節。
  • API優先

由於 Akka serverless 的本質是無資料庫,開發人員只需要考慮實現他們的 API,使 Akka serverless API-first。它允許開發人員根據需要建立資料物件,而不必擔心資料需要如何持久儲存在持久儲存中。此功能開闢的另一個途徑是開發人員希望為其服務配置的暴露級別,因為該平臺負責與儲存的連線。
  • 無伺服器

開發人員無需擔心隨著對其應用程式需求的增加而擴充套件其應用程式。Akka serverless 處理開發人員部署的服務所需的所有基礎設施。Akka 提供的執行時是基於 Actor 的、自我修復的、高度可擴充套件的分散式執行時。
 

Akka 無伺服器程式設計模型
開發人員建立的服務可以包含無狀態和有狀態元件。對於有狀態的元件,開發者可以選擇狀態模型,資料管理由 Akka serverless 處理。

  • 服務

服務是開發人員編寫的程式碼,用於指定正在實現的應用程式的邏輯。服務可以包含無狀態操作、有狀態實體和檢視。
  • Action

Action包含不需要狀態永續性的程式碼。例如,一個動作可以在監聽一個事件時轉換一個實體。
  • 實體

實體是封裝資料和業務邏輯的域物件。實體可以是不同的狀態模型,可以根據實體的用例進行選擇,並決定 Akka serverless 如何管理資料。
  • 檢視Views

檢視用於從多個實體檢索資料。我們可以使用類似 SQL 的查詢從實體中檢索資料。
  • 狀態模型

傳統上,應用程式使用資料庫層來檢索和儲存狀態資訊。它給開發人員帶來了很大的負擔,因為需要進行正確的資料庫連線、維護版本、確保不同版本之間的相容性、擴充套件資料庫和處理錯誤。在 Akka serverless 中,每個服務都有一個代理可用。代理就像一個記憶體資料儲存,儲存所有狀態資訊,從而減少資料檢索操作的延遲。
有兩種型別的狀態模型 - 值實體狀態模型和基於事件的實體狀態模型。
  1. 值實體狀態模型:值實體狀態模型僅將當前狀態持久化到持久資料儲存中。一旦具有特定 ID 的實體被例項化,其狀態將被快取以更快地對其進行後續請求。價值實體狀態模型提供的好處是 - 可擴充套件 - 長壽命 - 可定址行為 - 更類似於傳統資料庫
  2. 事件源實體狀態模型基於事件的實體狀態模型捕獲資料更改,而不是覆蓋現有值。資料更改日誌儲存在日誌中。不同的服務可以在不同的點開始讀取日誌,從而導致最終的一致性。儘管有些可能需要更長的時間,但所有各方都可以保證在某個時候趕上。事件源實體狀態模型提供的好處 - 審計 - 重建歷史狀態的時間查詢

詳細教程點選標題
程式碼參閱此連結中提供的儲存庫。
 

相關文章