2016-11-29 25 views
5

Powiedzmy, że mamy mikroserwis A i B. B ma własną bazę danych. Jednak B musi być skalowane w poziomie, a zatem mamy 3 wystąpienia B. Co dzieje się z bazą danych? Czy skaluje się odpowiednio, czy pozostaje tą samą (scentralizowaną) bazą danych dla instancji 3 B, czy staje się rozproszoną bazą danych, co się dzieje?Microservices: instancje bazy danych i mikroserwisów

+1

3 instancje B jest nadal 1 usługa logiczne. Potrzebujesz tylko jednej bazy danych. –

+0

@TomRedfern Dzięki za odpowiedź;) Czy byłeś kiedyś w sytuacji, w której musisz skalować bazę danych? Jeśli tak, to jak sobie z tym poradzić? – nobitta

+0

możliwy duplikat adresu http://stackoverflow.com/questions/33399988 – KGhatak

Odpowiedz

3

używanie jednej bazy danych przez różne instancje serwisowe jest ok w przypadku korzystania z partycjonowania danych.

0

Odpowiedź jest oparta na tym, jaki rodzaj danych należy udostępnić z 3 instancji B. Niektóre sytuacje:

  1. B jest tylko odczyt danych bez napisać coś, DB można użyć metody replikacji i trzy B instancja tylko odczyt danych z innej instancji DB i DB powtarzano.

  2. Instancja B może odczytywać i zapisywać dane bez przerywania innej instancji B, co oznacza, że ​​każda instancja B może mieć wyznaczone dane, i nie ma udostępniania danych między instancjami, baza danych została zmieniona na trzy bazy danych o tym samym schemacie, ale zupełnie inne dane ;

  3. Instancje B powinny udostępniać większość danych, a każde wystąpienie może spowodować zapisanie danych z powrotem do bazy danych. Tak więc instancja B powinna używać jednego DB i jakiegoś DB blokady, aby uniknąć konfliktu między instancjami.

W drugiej jakiejś innej sytuacji, nie będzie wiele innych podejść do rozwiązania problemu, takie jak przy użyciu DB pamięć jak REDiS, obsługa kolejek jak na przykład RabbitMQ B.