Nehmen wir an, wir haben einen Microservice A und B. B hat eine eigene Datenbank. Allerdings muss B horizontal skaliert werden, so dass wir 3 Instanzen von B haben. Was passiert mit der Datenbank? Skaliert es entsprechend, bleibt es die gleiche (zentralisierte) Datenbank für die 3 B-Instanzen, wird es eine verteilte Datenbank, was passiert?Microservices: Datenbank und Microservice-Instanzen
Antwort
Die Verwendung einer Datenbank durch mehrere Dienstinstanzen ist in Ordnung, wenn Sie die Datenpartitionierung verwenden.
Die Antwort basiert auf der Art der Daten, die von 3 B-Instanzen geteilt werden sollen. Einige Gelegenheiten:
Die B ist nur Daten zu lesen, ohne etwas zu schreiben, kann die DB Praxisanwedungen Methodik und drei B-Instanz lesen nur Daten aus verschiedenen DB-Instanz und DB wurde repliziert.
Die B-Instanz kann Daten lesen/schreiben, ohne andere B-Instanzen zu unterbrechen, dh jede B-Instanz kann bestimmte Daten haben und keine Datenfreigabe zwischen Instanzen. Die Datenbank wurde in drei Datenbanken mit demselben Schema, aber völlig unterschiedlichen Daten geändert ;
Die B-Instanzen sollten die meisten Daten teilen, und jede Instanz kann Daten in die DB zurückschreiben. Daher sollte die B-Instanz eine DB und eine bestimmte DB-Sperre verwenden, um Konflikte zwischen den Instanzen zu vermeiden.
In anderen einige andere Situation, wird es viele andere Ansätze, das Problem wie die Verwendung von Speicher DB wie redis, Queue-Dienst wie RabbitMQ für B-Instanz zu lösen.
Wie in pattern database per service von Chris Richardson erklärt,
Instanzen des gleichen Dienstes soll die gleiche Datenbank
- 1. Microservices und beschränkte Kontexte
- 2. BDD und Microservices
- 3. Microservices und ERP
- 4. Autorisierung und Benutzer Microservices Design
- 5. Vagrant und Microservices Dev Environment
- 6. Lehre, Microservices und Zend expressive
- 7. Interkommunikations-Microservices - Wie?
- 8. Microservices testen?
- 9. Auditing Microservices
- 10. Microservices Konfigurationsserver
- 11. Transaktionen in Microservices
- 12. Microservices: Wie man effektiv mit Datenabhängigkeiten zwischen Microservices umgeht
- 13. Teilen Sie Daten zwischen Microservices
- 14. Scala, Akka, Lagom, Play, Reactive und Microservices
- 15. AWS API Gateway + Elastische Bohnenstange und Microservices
- 16. Freigabe von Code und Schema zwischen Microservices
- 17. Scrapy Throttling und Anfrage Scheduling nur Microservices
- 18. Microservices: Wie wird der Quellcode vieler Microservices gespeichert?
- 19. Zugriffsberechtigungen für Microservices-Benutzer
- 20. Microservices Per DB-Tabelle
- 21. Microservices auf Docker - Architektur
- 22. Spring Cloud Microservices Speicherauslastung
- 23. zentrale Einstellungen mit Microservices
- 24. Sicherheit zwischen Microservices
- 25. Microservices - RestTemplate UnknownHostException
- 26. Clustering Microservices Komponenten
- 27. Sharing-Code zwischen Microservices
- 28. Nested GraphQL Server/Microservices
- 29. Zwei Microservices zum Lesen und Schreiben in eine Datenbanktabelle
- 30. Microservices: Datenquelle pro Instanz oder pro Microservice?
3 Instanzen von B ist noch 1 logischer Dienst teilen. Sie brauchen also nur eine Datenbank. –
@TomRedfern Danke für Ihre Antwort;) Waren Sie jemals in einer Situation, in der Sie auch die Datenbank skalieren müssen? Wenn ja, wie ging das? – nobitta
möglich duplizieren von http://StackOverflow.com/questions/33399988 – KGhatak