Acabo de terminar de leer High-Latency, Low-Bandwidth Windowing in the Jupiter Collaboration System y casi todo lo he seguido hasta la parte 6: consistencia global. Esta parte describe cómo el sistema descrito en el documento puede ampliarse para acomodar a varios clientes conectados al servidor. Sin embargo, la explicación es muy breve y básicamente dice que el sistema funcionará si el servidor central simplemente envía los mensajes del cliente a todos los otros clientes. Realmente no entiendo cómo funciona esto. ¿Qué vector de estado se enviaría en el mensaje que se envía a todos los otros clientes? ¿El servidor mantiene vectores de estado separados para cada cliente? ¿Mantiene una copia separada de los widgets localmente para cada cliente?¿Cómo funciona la colaboración en tiempo real con múltiples clientes en un sistema que usa transformaciones de operación con un servidor central?
El ejemplo simple en el que puedo pensar es esta configuración: imagine que el cliente A, el servidor y el cliente B con el cliente A y el cliente B están conectados al servidor. Para comenzar, los tres tienen el objeto de estado "ABCD". Entonces, el cliente A envía el mensaje "inserte el carácter F en la posición 0" al mismo tiempo que el cliente B envía el mensaje "inserte el carácter G en la posición 0" al servidor. Parece que simplemente retransmitir el mensaje del cliente A al cliente B y viceversa en realidad no maneja este caso. Entonces, ¿qué hace exactamente el servidor?
Para la posteridad, en caso de que no esté claro: el servidor actúa como un "cliente proxy" entre 'A' y' B', traduciendo una op de 'A '(' a') a 'a'', y * reenvía * op' a'' a 'B' (como si el propio servidor generara el op). El servidor, entonces, tiene copias de las colas de operación 'A' y 'B', mientras que 'A' y 'B' solo tienen una copia de la cola de operación del servidor. Para obtener más información, consulte * Control de concurrencia en sistemas Groupware *, y * Un contraejemplo para la Transformación operacional distribuida y un Algoritmo corregido para Comunicación punto a punto *. – mzhang