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
Odpowiedz
używanie jednej bazy danych przez różne instancje serwisowe jest ok w przypadku korzystania z partycjonowania danych.
Odpowiedź jest oparta na tym, jaki rodzaj danych należy udostępnić z 3 instancji B. Niektóre sytuacje:
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.
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 ;
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.
Jak wyjaśnił Chris Richardson w pattern database per service,
wystąpień tego samego usługi powinny dzielić tej samej bazy danych
- 1. Microservices: Jak przechowywać kod źródłowy wielu mikroserwisów?
- 2. nadrzędna pom i microservices
- 3. Microservices - Obsługa wielu magazynów danych, ładowanie danych początkowych itp.
- 4. Microservices: jak radzić sobie z kluczowymi relacjami obcymi
- 5. Uruchamianie wielu usług microservices rozruchu z Gradle
- 6. Matryce i bazy danych
- 7. Feign Netflix - Propaguj status i wyjątek za pomocą Microservices
- 8. Oczyszczanie agenta oczyszczania bazy danych i bazy danych
- 9. Czym różnią się graficzne bazy danych i obiektowe bazy danych?
- 10. Wykorzystanie pamięci microservices w chmurze Spring
- 11. Rozgałęzianie i bazy danych TFS
- 12. Sharding bazy danych i JPA
- 13. poświadczenia bazy danych i leiningen?
- 14. Skalowanie mikroserwisów za pomocą Dockera
- 15. Architektura uwierzytelniania mikroserwisów z passport.js
- 16. Microservices: jak zintegrować interfejs użytkownika?
- 17. Baza danych bazy danych Codeigniter
- 18. Błąd podzbioru przestrzennego i bazy danych PostGIS
- 19. Synchronizowanie lokalnej i elastycznej bazy danych Beanstalk?
- 20. Używanie użytkowników mysqldump i bazy danych
- 21. Przechowywanie i porównywanie obiektów z bazy danych
- 22. Phusion Pasażer i buforowanie bazy danych
- 23. Rails 3 i bazy danych wykresów
- 24. Laravel bez migracji Eloquent i bazy danych?
- 25. Używanie transakcji STM i bazy danych
- 26. Zasoby dotyczące dzielenia bazy danych i partycjonowania
- 27. Wiosenna webflux i czytanie z bazy danych
- 28. Pętla przez bazy danych na serwerze i aktualizacja danych
- 29. Model bazy danych dla danych Live i Draft
- 30. Haskell nakładających instancje i funkcje typu
3 instancje B jest nadal 1 usługa logiczne. Potrzebujesz tylko jednej bazy danych. –
@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
możliwy duplikat adresu http://stackoverflow.com/questions/33399988 – KGhatak