2010-04-01 8 views
5

Quand les transactions distribuées ont-elles un sens dans une architecture orientée services?Transactions SOA et distribuées

+1

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

Répondre

2

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:

  1. inventaire de requête pour vérifier que le client a le bon équipement
  2. configurer l'équipement du client via la médiation
  3. inventaire de mise à jour avec nouvelle configuration
  4. mis en place le moteur de notation pour compter CDR pour le client
  5. mis en place un logiciel de facturation pour facturer au client le plan de prix correct
  6. 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.

1

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.