在本文中,透過 Docker Compose 執行的實際演示來了解資料庫 (MariaDB) 的高可用性和彈性。
關鍵任務應用程式需要高可用性。高可用性的目標是為使用者提供對服務或資源的一致訪問,最大限度地減少中斷的可能性。自動故障轉移是用於實現高可用性的特定機制。它涉及自動檢測系統元件(如伺服器、網路或資料庫)的故障,並立即將操作切換到備用元件,而無需人工干預。這增加了彈性。
MariaDB MaxScale是一個資料庫代理,包含高可用性功能。在本文中,我將向您展示如何使用Java 和 Svelte 實現的線上商店模擬器應用程式進行嘗試。
場景:
使用 JavaScript 和 Svelte 框架開發的 Web 應用程式向 Java 後端發出 HTTP 請求。後端使用伺服器傳送的事件進行響應,前端使用這些事件來更新瀏覽器上的使用者介面。
後端使用Spring Boot實現,並使用R2DBC(反應式)連線到MariaDB資料庫叢集。簡而言之,後端邏輯是對線上商店資料庫的讀取和寫入的模擬。模擬是引數化的,使用者可以調整:
- 每分鐘產品訪問次數:每分鐘對資料庫的讀取次數。
- 每分鐘訂單數:每分鐘向資料庫寫入的次數。
- 每個訂單的產品:寫放大。
- 超時(以毫秒為單位):多少秒後才認為對資料庫的請求失敗。
資料庫叢集的前端是一個名為 MaxScale 的資料庫代理。該代理使叢集對於 Java 後端來說就像一個邏輯資料庫。 MaxScale 還執行讀/寫拆分(將寫入傳送到主 MariaDB 伺服器並將讀取傳送到副本),以及使用可配置演算法在副本伺服器之間進行讀取的負載平衡。資料自動從主資料庫伺服器複製到副本資料庫伺服器。
從原始碼構建 Docker 映象
這裡為模擬器中的每個元件準備了自定義 Docker 映象。您可以從源構建 映象(可選),也可以使用 Docker Hub 中已構建和釋出的 映象。如果您決定自己構建 映象,可以在 GitHub 上找到原始碼:
- MariaDB 部署:自定義 映象,可使用 MaxScale 輕鬆部署複製的 MariaDB 拓撲。不要在生產中使用這些!這些 映象僅適用於演示應用程式。使用官方 MariaDB Docker 映象進行生產部署。
- 後端應用程式:連線資料庫叢集的後端應用程式。
- 前端應用程式:前端應用程式向後端發出模擬配置請求並接收事件以顯示模擬結果。
每個儲存庫都有 Dockerfile,您可以使用它們來構建自己的 Docker 映象。例如,要構建後端應用程式 映象,請執行:
docker build --tag alejandrodu/online-store-simulator-java-backend .