Quand les transactions distribuées ont-elles un sens dans une architecture orientée services?Transactions SOA et distribuées
Répondre
Les transactions distribuées sont très souvent utilisées dans les environnements SOA. Si vous avez un service composite appelant plusieurs services, les appels de service sous-jacents doivent être traités comme une transaction unique. Les processus d'affaires devraient permettre la réduction de leurs pas. Si les ressources sous-jacentes le permettent, vous pouvez utiliser des commits en deux phases, mais dans de nombreux cas c'est impossible. Dans ces cas, les actions de compensation doivent être effectuées sur les services/ressources invoqués avant l'étape échouée. En d'autres termes, annulez les étapes réussies dans l'ordre inverse.
exemple Imaginary: dispositions de l'entreprise de télécommunications un nouveau produit VoIP pour un client avec 6 appels de service:
- inventaire de requête pour vérifier que le client a le bon équipement
- configurer l'équipement du client via la médiation
- inventaire de mise à jour avec nouvelle configuration
- mis en place le moteur de notation pour compter CDR pour le client
- mis en place un logiciel de facturation pour facturer au client le plan de prix correct
- Mise à jour du système CRM avec le résultat du processus de provisioning
Les 6 étapes ci-dessus doivent faire partie d'une transaction. Par exemple. Si la mise à jour de l'inventaire échoue, vous devrez peut-être annuler la configuration de l'équipement du client.
Pas vraiment un cas de quand ils ont un sens. Une transaction (distribuée ou non) est mise en œuvre par nécessité plutôt que par choix arbitraire, pour garantir la cohérence. L'alternative est de mettre en place un processus de réconciliation pour assurer une cohérence éventuelle.
Dans l'exemple de banque classique (argent du compte A, dans le compte B), la cohérence transactionnelle est essentielle. Dans certains systèmes d'inventaire (vérification de l'inventaire, diminution de l'inventaire, vente au client), il peut être acceptable que les niveaux de stock soient plus précis, plutôt que garantis. Dans ce cas, en ignorant un échec (décrément de l'inventaire, la vente ne se termine pas) pourrait être traitée par rapprochement plus tard.
- 1. Transactions SSIS Oracle et distribuées
- 2. Transactions distribuées avec WCF
- 3. Coordinateur de transactions distribuées
- 4. NHibernate - Les transactions distribuées et fournissant votre propre résultat de connexion en exception
- 5. Interruptions distribuées
- 6. Si MSDTC doit être installé dans le cas des transactions distribuées
- 7. Pratique recommandée pour l'arrêt des transactions escaladées à distribuées lors de l'utilisation de transactionscope
- 8. Vulnérabilités SOA
- 9. Modèle de données distribuées
- 10. TransactionScope et Transactions
- 11. Transactions RabbitMQ et DB
- 12. NHibernate, transactions et TransactionScope
- 13. Transactions et triggers
- 14. Transactions PHP et PostgreSQL?
- 15. SOA avec asp.net MVC
- 16. Dilemme SOA/ESB
- 17. application complètement SOA?
- 18. Couplage des transactions de messagerie et des transactions ADO.NET
- 19. VisualSVN sur des machines distribuées?
- 20. Transactions SQLTransaction et T-SQL
- 21. mysqli_multi_query et les transactions mysql
- 22. KO3, PostgresSQL, Transactions et PDOException
- 23. Gridview avec linq et transactions
- 24. SQL Server et bases de données distribuées. Comment synchroniser?
- 25. Messagerie Middleware Vs RPC et bases de données distribuées
- 26. De bonnes ressources sur SOA?
- 27. ORM sans état pour SOA
- 28. Demande sur Soa, SoapUI, SaaS et services Web
- 29. hautement configurable et efficace cadre ESB/SOA/intégration
- 30. Canaux pour Java, Java EE, C#, asp.net et SOA
Cet article indique que SOA et les transactions distribuées sont un anti-pattern - http://arnon.me/2010/09/soa-antipattern-transactional-integration/. Il a une section "Exceptions Connues" au bas qui parle de "Systèmes Fermés", mais indique ensuite que c'est probablement une mauvaise idée de toute façon. – Bermo