2017-08-23 6 views
0

J'ai 2 instances de bases de données MySQL et elles sont gérées par Load Balancer. L'application Spring contacte maintenant l'équilibreur de charge avec beaucoup de demandes. Certaines transactions verrouillent une ligne dans la base de données (exclusive). Dans certains cas, un blocage se produit lorsque j'envoie par exemple 100 demandes en 1 seconde. Est-ce que quelqu'un sait ce qui peut causer cette impasse? Bien sûr, le blocage se produit uniquement lorsque j'envoie la même requête qui verrouille la même ligne dans la base de données.Deux instances de base de données ne sont pas synchronisées avec l'équilibreur de charge

enter image description here

Ce système est ainsi semble maintenant.

+0

Je recommanderais d'utiliser une seule base de données logique pour votre application. Partitionnez-le si nécessaire. –

+0

L'architecture doit être de cette façon en raison d'une grande quantité de demandes (100-1000 req/sec). Et aussi parce que j'ai ainsi une réplication, donc les données seront plus sécurisées. – alxbxbx

+0

Fais comme tu veux, mais je n'utiliserais pas cette architecture. –

Répondre

0

Apparemment, la synchronisation de deux bases de données n'est pas une bonne idée lorsque vous avez une grosse charge de requêtes. Il vaut donc mieux aller avec une DB, et laisser l'autre être "esclave". La meilleure stratégie dans cette situation est le basculement, que j'ai utilisé.

Avec plusieurs instances d'application, il n'y a aucun problème de réplication. Mais avec la base de données, la synchronisation est un gros problème. Donc, comme l'a dit @Tim Biegeleisen, il est préférable d'utiliser une base de données unique.