簡體   English   中英

如何在 Kube.netes 中實現每個服務數據庫模式?

[英]Ho do I implement Database per Service pattern in Kubernetes?

假設我想實現每個服務數據庫模式或其相關模式之一,如 Private-Tables-、Schema- 或 Database-server-per-service ( https://microservices.io/patterns/data/database-per-service .html ) 對於微服務:如果我想在 Kube.netes 中運行數據庫而不是使用外部數據庫或托管數據庫作為服務,我該如何解決這個問題 go?

我是否必須使用StatefulSet在 Kube.netes 中部署數據庫,或者在某些情況下Deployment是否足夠? 如果是這樣,在哪個?

假設一組微服務需要存儲關系數據的能力,例如,關系數據庫中的關系數據:如果我想實現 Database-server-per-service,微服務的每個Deployment都應該為其數據庫擁有自己的StatefulSet嗎? 或者我應該為任何微服務的所有Deployment部署一個StatefulSet並通過在該StatefulSet中為每個微服務創建一個數據庫來進行邏輯分離?

這實際上取決於您的選擇和需求。

如果出現以下情況,您應該為單集群設置 go:

  • 與高可用性和容錯相比,您更喜歡節省成本
  • 您缺少熟練的開發人員來管理多集群

如果出現以下情況,您應該為多集群設置 go:

  • 您的應用程序需要高度的高可用性,並且您希望應用程序的停機時間為零。 因為您不限制您的集群只有一個數據庫,所以您可以在不同的集群中擁有多個數據庫。 這將允許單點故障的持久性。
  • 您的團隊擁有足夠的技術專長來管理多集群的復雜設置和維護

使用多集群方法,您可以根據每個數據庫的需要配置集群。 這將包括資源分配、網絡配置和安全配置。 例如,您可以為生產數據庫設置一個集群,為開發數據庫設置另一個集群。 您可以為需要高可用性、高安全性、容錯性的數據庫創建一個集群,為需要低可用性、低安全性、非容錯性的數據庫創建另一個集群。 當手頭有多個集群時,您現在可以更好地控制數據庫設置的設計和配置。

對於單個集群,您只能根據集群的需求而不是每個數據庫的特定需求來配置集群。

但是,不要只根據這個答案做出選擇。 您還應該考慮團隊的技術專長、應用程序的需求和預算。 99% 的情況下,單集群方法都非常適合您,但情況並非總是如此。

我希望這有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM