2016-11-29 72 views
5

假設我們有一個微服務A和一個B.B有它自己的數據庫。但是B必須水平縮放,因此我們最終得到了3個B實例。數據庫會發生什麼?它是否相應地縮放?是否保持3 B實例的相同(集中式)數據庫?它是否成爲分佈式數據庫?會發生什麼?微服務:數據庫和微服務實例

+1

3實例仍爲1個邏輯服務。所以你只需要一個數據庫。 –

+0

@TomRedfern感謝您的回答;) 您是否曾經遇到過需要擴展數據庫的情況?如果是這樣,怎麼處理? – nobitta

+0

http://stackoverflow.com/questions/33399988可能的重複 – KGhatak

回答

3

當您使用數據分區時,通過多個服務實例使用一個數據庫是可以的。

0

答案基於哪種數據應該從3個B實例共享。有些場合:

  1. 在B只是讀而不寫什麼數據,數據庫可以使用重複方法論,三級乙等的實例就是從不同的數據庫實例讀取數據,DB被複制。

  2. B實例可以在不中斷其他B實例的情況下讀/寫數據,這意味着每個B實例都可以擁有指定的數據,並且實例之間沒有數據共享,數據庫被更改爲具有相同模式但完全不同數據的三個數據庫;

  3. B實例應共享大部分數據,並且每個實例都可以將數據寫回到數據庫。所以B實例應該使用一個DB和一些DB鎖來避免實例之間的衝突。

在其他一些不同的情況,還會有很多其他的方法來解決這個問題,如使用內存數據庫Redis的一樣,排隊服務一樣的RabbitMQ對於B實例。