2016-11-29 9 views
5

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

+1

3 Instanzen von B ist noch 1 logischer Dienst teilen. Sie brauchen also nur eine Datenbank. –

+0

@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

+0

möglich duplizieren von http://StackOverflow.com/questions/33399988 – KGhatak

Antwort

3

Die Verwendung einer Datenbank durch mehrere Dienstinstanzen ist in Ordnung, wenn Sie die Datenpartitionierung verwenden.

0

Die Antwort basiert auf der Art der Daten, die von 3 B-Instanzen geteilt werden sollen. Einige Gelegenheiten:

  1. 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.

  2. 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 ;

  3. 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.