Figmas Multiplayer-Bearbeitung: Ein vereinfachter CRDT-Ansatz
Vor vier Jahren begann Figma mit dem Aufbau der Multiplayer-Funktionalität und entschied sich für ein benutzerdefiniertes System anstelle des verbreiteten Operational Transform (OT)-Algorithmus. Angetrieben von der Notwendigkeit schneller Iteration und Bedenken hinsichtlich der Komplexität von OT, wurde eine einfachere Lösung geschaffen. Dieser Beitrag beschreibt detailliert die Architektur des Multiplayer-Systems von Figma, einschließlich der Client/Server-Architektur, der WebSocket-Kommunikation, der Offline-Bearbeitungsfunktionen und der Datensynchronisierung. Obwohl von CRDTs (Conflict-free Replicated Data Types) inspiriert, weicht die Implementierung von Figma von der strikten Einhaltung von CRDT ab und nutzt deren Prinzipien, während gleichzeitig die Vorteile eines zentralen Servers für Effizienz und Einfachheit genutzt werden. Der Artikel vergleicht OTs und CRDTs und geht detailliert auf das Design der Datenstruktur von Figma und deren Umgang mit Grenzfällen ein.
Mehr lesen