Je crois que je ne me suis pas bien exprimé. Je parle ici d'une transaction distribuées. Voici un exemple du problème pour mieux comprendre ce que je veux faire:
Supposant que j'ai une machine client (C) et trois machines serveurs (S1, S2 et S3) connectées en réseau.
C lance un programme qu'on appellera Prg (un agent mobile par exemple) qui va se déplacer vers S1 et effectue une action A1, puis il se déplace vers S2 et effectue une action A2, et enfin il se déplace vers S3 et effectue une action A3, puis reviens a C.
Supposant que ces actions sont dépendant entre eux et donc que le client a besoin que toute les actions (A1 et 12 et A3) soit réalisés, ou aucune. Par exemple, si les actions A1, A2 et A3 représentent l'achat de 3 ingrédients 1, 2 et 3 pour faire un plat de cuisine, on n'aimerai pas qu'un ou plusieurs ingrédients ne soient pas achetés (exemple parce qu'il sont indisponible).
Ce que je veux faire maintenant est que par exemple dans le cas où le Prg passe par S1 et effectue son action A1 (achat d'ingrédient 1), puis quand il passe à S2 il n'arrive pas effectuer A2 vu qu'il n y a plu d'ingrédient 2 disponible ici. Alors dans ce cas il envoi un message "abort" au serveurs précédents qu'il a déjà parcouru (ici S1) pour abort l'action A1. Puis il retourne vers C et l'informe que c'est échoué.
Dans le cas où le Prg effectue A1, puis passe à S2 et effectue A2, puis passe à S3 et effectue A3, puis retourne vers C, ici il envoi un message "commit" à S1 et à S2 et à S3 pour leurs demander de commiter les actions A1, A2 et A3. Et dans ce cas la transactions distribuée constitué de A1+A2+A3 est effectué avec succès.
Bon ce n'est qu'un exemple simple pour illustrer ce que je veux faire.
La question est:
Est-ce que vous voyez que pour une action A qui dois être effectué sur un serveur x c'est mieux de faire en sorte que:
- L'action A ne soit pas effectué dutout, mais plutôt sauvegarder en attendant de recevoir un message plus tard qui dira si l'action dois être effectué ou pas.
- Ou bien effectuer l'action, puis selon le message reçu plus tard, on la commit ou abort.
Voilà.
Message édité par ssmr le 04-03-2010 à 22:39:41