關于可擴展性的一個簡單問題。我一直在研究可擴展性,我想我了解它背后的基本概念。您可以使用 Kubernetes 之類的編排器來管理系統的自動可擴展性。這樣,當特定微服務的呼叫需求增加時,編排器將創建它的新實體,以處理需求的需求。現在,在我們的例子中,我們正在構建一個類似于 Microsoft 的“eShop On Containers”示例中的微服務結構:

現在,這里每個微服務都有自己的資料庫來管理,就像在我們的應用程式中一樣。我的問題是:在升級這個系統時,通過創建某個微服務的新實體,讓我們在上面的例子中說“訂購微服務”,這不會創建一組新的資料庫嗎?在我們的應用程式中,我們使用 SQLite,因此每個微服務都有自己的資料庫副本。我假設為了能夠升級這樣的系統,需要每個微服務都連接到外部 SQL Server。但如果真是這樣,那豈不是瓶頸了?我的意思是,讓一個微服務的多個實體滿足對特定服務的更多需求,但所有這些實體仍然訪問單個資料庫服務器?
uj5u.com熱心網友回復:
在我們的應用程式中,我們使用 SQLite,因此每個微服務都有自己的資料庫副本。
橫向擴展服務最重要的方面之一是它們是無狀態的——Kubernetes 上的服務應該根據 12 要素原則進行設計。這意味著服務實體不能擁有自己的資料庫副本,除非它是快取。
我假設為了能夠升級這樣的系統,需要每個微服務都連接到外部 SQL Server。
是的,如果您希望能夠橫向擴展,則需要使用實體外部并在實體之間共享的資料庫。
但如果真是這樣,那豈不是瓶頸了?
這在很大程度上取決于您如何設計系統。將微服務與單體進行比較;使用單體時,整個系統通常使用一個大資料庫,但使用微服務更容易使用多個不同的資料庫,因此以這種方式擴展資料庫應該更容易。
我的意思是,讓一個微服務的多個實體滿足對特定服務的更多需求,但所有這些實體仍然訪問單個資料庫服務器?
還有很多方法可以擴展資料庫系統,例如快取讀取操作(但要小心)。但這本身就是一個很大的話題,在很大程度上取決于您做什么以及如何做事。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/334703.html
標籤:sql 数据库 码头工人 Kubernetes 微服务
