Ich habe gerade High-Latency, Low-Bandwidth Windowing in the Jupiter Collaboration System gelesen und ich folgte meistens alles bis Teil 6: globale Konsistenz. Dieser Teil beschreibt, wie das im Beitrag beschriebene System erweitert werden kann, um mehrere mit dem Server verbundene Clients zu unterstützen. Die Erklärung ist jedoch sehr kurz und besagt im Wesentlichen, dass das System funktionieren wird, wenn der zentrale Server lediglich Client-Nachrichten an alle anderen Clients weiterleitet. Ich verstehe nicht wirklich, wie das funktioniert. Welcher Statusvektor würde in der Nachricht gesendet werden, die an alle anderen Clients gesendet wird? Werden auf dem Server für jeden Client separate Statusvektoren verwaltet? Wird eine separate Kopie der Widgets lokal für jeden Client erstellt?Wie funktioniert die Echtzeit-Zusammenarbeit mit mehreren Clients in einem System mithilfe von Operationstransformationen mit einem zentralen Server?
Das einfache Beispiel, das mir einfällt, ist dieses Setup: Stellen Sie sich Client A, Server und Client B mit Client A und Client B vor, die beide mit dem Server verbunden sind. Zu Beginn haben alle drei das Zustandsobjekt "ABCD". Dann sendet Client A die Nachricht "Zeichen F an Position 0 einfügen" zur selben Zeit, zu der Client B die Nachricht "Zeichen G an Position 0 einfügen" an den Server sendet. Es sieht so aus, als würde die Nachricht von Client A an Client B und umgekehrt nicht wirklich mit diesem Fall umgehen. Was genau macht der Server?
Für die Nachwelt, falls dies nicht klar war: Der Server fungiert als "Proxy-Client" zwischen 'A' und' B', übersetzt ein op von 'A' (' a') in 'a'' und * forwards * op' a'' nach 'B' (als ob der Server selbst das op generiert hätte). Der Server verfügt dann über Kopien von Operationswarteschlangen "A" und "B", während "A" und "B" nur eine Kopie der Serveroperationswarteschlange haben. Weitere Informationen finden Sie unter * Concurrency Control in Groupware-Systemen * und * Ein Gegenbeispiel zur verteilten Operational Transformation und einem korrigierten Algorithmus für Punkt-zu-Punkt-Kommunikation *. – mzhang