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
Répondre
L'utilisation d'une base de données par des instances de service multiple est acceptable lorsque vous utilisez le partitionnement de données.
La réponse est basée sur le type de données qui doit être partagé à partir de 3 instances B. Quelques occasions:
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 ;
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.
Comme l'a expliqué Chris Richardson dans pattern database per service,
Les instances du même service doivent partager la même base de données
3 cas de B est encore 1 service logique. Vous n'avez donc besoin que d'une base de données. –
@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
duplicata possible de http://stackoverflow.com/questions/33399988 – KGhatak