J'ai deux systèmes indépendants. À un moment donné, je voudrais être en mesure de faire une opération qui affecte les deux systèmes, et je voudrais simuler l'atomicité, même si cela est techniquement impossible. Pour illustrer le problème, disons que nous aimerions déplacer un objet d'un système à l'autre. Tout d'abord parce que chaque opération peut échouer à tout moment, j'ajoute un enregistrement provisoire au système indiquant l'intention. Le algo est:simuler un fonctionnement atomique dans des systèmes indépendants
- Définir l'objet dans le système 1 en mode provisoire pour supprimer
- Définir l'objet dans le système 2 en mode provisoire pour ajouter
- Déplacer l'objet du système 1 à système 2
- Retirez le système du expérimentalisme 2
- Retirez le système de expérimentalisme 1
l'absence d'opération atomique que pourrait entraîner avoir l'objet dans les deux systèmes ne sont pas en fonction de l'ordre des étapes 4 et 5, et un accident entre eux.
Ma question est, y at-il un algorithme qui pourrait en quelque sorte résoudre le manque d'atomicité et me permettre de le garantir. Je vois en quelque sorte que cela semble impossible, mais j'espère que ce n'est pas le cas.
Habituellement, des opérations de ce type sont effectuées en deux phases: le gestionnaire de transactions demande aux deux systèmes s'ils sont prêts à "finaliser" une action provisoire et, après accord, envoie une commande. –
Veuillez élaborer un peu sur les deux systèmes - de quoi s'agit-il? Quelle est la façon dont ils manipulent un objet en mode «provisoire»? Peut-il être vu pendant que c'est provisoire? Est-ce que cela devient «sans valeur» après un certain temps? – zmbq
Les systèmes gèrent les états provisoires lorsque la poignée gracieuse du délai d'attente provisoire - les systèmes n'a pas pu terminer l'opération complète - vérifie l'état actuel des objets et restaure la présentation correcte. L'objet peut être vu, mais certains sous-ensembles d'opérations ne sont pas autorisés - en fonction de ce qui est provisoire - ils peuvent avoir des drapeaux de tentative différents activés. – gsf