Bonjour,
après de nombreuses recherches infructueuses (certainement parce que je n'ai pas trouvé le terme technique de ce problème) je viens solliciter votre aide :-)
De façon théorique, je voulais savoir comment synchroniser des objets sur des ordinateurs distants (tous connectés à Internet (donc possibilité d'intégrer dans le réseau un serveur central qui centralise les objets)) et ce de façon "temps-réel" (juste un décalage du au ping en somme) tout en ayant des contraintes d'intégrités sur ces objets (exemple : 2 clients tentent de réaliser une modification au même moment, la modif du client 1 est réalisé, par contre la modif du client 2 est irréalisable à cause de la modif du client 1 qui s'est exécutée 1ms avant : il faut donc dire au client 2 que son action est irréalisable).
J'avais pensé au début à ce que chaque modification d'un objet partagé passe par une demande de modification sur le serveur et que celui-ci la valide ou l'invalide et que le client soit en mis en attente pour savoir si il peut continuer ou non son action. Mais cela pose un problème de mise en attente du programme à chaque modification de l'objet... avec un ping de 200ms, 5 modifications successives prendraient rien qu'en temps de transite 1 seconde...
J'ai donc ensuite pensé à une façon asynchrone de faire : les modifications sont réalisés en local chez le client et envoyés de façon asynchrone au serveur pour le mettre à jour et propagé aux autres clients la modification. Si la modification est invalidé par le serveur un ordre de rollback est envoyé au client. Tout le problème dans cette solution réside dans la mise en place de ce système de rollback...
Existe-t-il d'autres façon de faire ceci ? Avez-vous des idées ou bien des pistes à me donner ?
Merci d'avance :-)
Partager