0

Par exemple amazon.com; ils s'appuient sur l'architecture de microservice et probablement l'ordre et le paiement sont des services de micro séparés mais quand vous commandez sur amazon.com vous pouvez enfin voir l'id de commande et les détails. Si ce n'est pas l'approche de cohérence éventuelle qu'est-ce que c'est? Peut-être 2PC?Comment obtenir une cohérence immédiate dans l'architecture des microservices?

Je suis en train de généraliser ma question; et si la cohérence finale n'est pas appropriée pour les transactions commerciales (l'utilisateur final devrait voir le résultat final de la transaction) mais que les microservices séparés ont un sens (comme la commande et le paiement) comment gérer la cohérence immédiate?

Répondre

2

Il existe plusieurs techniques qui peuvent fournir des transactions inter-services (atomicité): 2PC, les transactions de Percolator et Sagas.

Percolator's transactions ont un niveau d'isolation sérialisable. Ils sont connus dans l'industrie, voir: Amazon DynamoDB transaction library, CockroachDB database, et le système Pecolator de Google lui-même. Un step-by-step visualization des transactions du percolateur peut vous aider à comprendre comment ils fonctionnent.

Le modèle saga a été décrit à la fin des années 80 dans le document Sagas mais est devenu plus pertinent avec la montée en puissance des microservices. S'il vous plaît voir le Applying the Saga Pattern parler d'inspiration. Mais puisque vous avez mentionné une cohérence éventuelle, il est important de noter que toutes les techniques exigent que les services individuels soient linéarisables (cohérence forte) et supportent la comparaison et l'ensemble.