2016-11-29 2 views
5

Disons que nous avons un microservice A et un b. B. B possède sa propre base de données. Cependant, B doit être mis à l'échelle horizontalement, donc nous finissons par avoir 3 instances de B. Qu'advient-il de la base de données? Est-ce qu'il évolue en conséquence, reste-t-il la même base de données (centralisée) pour les 3 instances B, devient-elle une base de données distribuée, que se passe-t-il?Microservices: instances de base de données et microservices

+1

3 cas de B est encore 1 service logique. Vous n'avez donc besoin que d'une base de données. –

+0

@TomRedfern Merci pour votre réponse;) Avez-vous déjà été dans une situation où vous devez également mettre à l'échelle la base de données? Si oui, comment le gérer? – nobitta

+0

duplicata possible de http://stackoverflow.com/questions/33399988 – KGhatak

Répondre

3

L'utilisation d'une base de données par des instances de service multiple est acceptable lorsque vous utilisez le partitionnement de données.

0

La réponse est basée sur le type de données qui doit être partagé à partir de 3 instances B. Quelques occasions:

  1. Le B est juste de lire les données sans écrire quoi que ce soit, la DB peut utiliser la méthode de répliquée et trois B par exemple juste de lire les données de différents DB d'instance et DB a été reproduit. L'instance B peut lire/écrire des données sans interruption d'une autre instance B, cela signifie que chaque instance B peut avoir des données désignées, et aucun partage de données entre instances, la base de données a été modifiée en trois bases de données avec le même schéma mais des données totalement différentes ;

  2. Les instances B doivent partager le maximum de données et chaque instance peut réécrire les données dans la base de données. L'instance B doit donc utiliser un DB et un verrou DB pour éviter les conflits entre les instances.

Dans d'autres une situation différente, il y aura beaucoup d'autres approches pour résoudre le problème, comme l'utilisation mémoire DB comme Redis, service de file d'attente comme rabbitmq par exemple B.