- Reflect ist ein neues Framework zum Erstellen von Multiplayer-Webanwendungen, ähnlich wie Figma, Notion und Google Sheets.
- Es ist eine Weiterentwicklung von Replicache, einem clientseitigen Synchronisierungs-Framework, und ergänzt dieses um einen vollständig verwalteten Server, um die Entwicklung von Multiplayer-Apps zu erleichtern.
- Reflect ist jetzt erstmals öffentlich verfügbar.
- Das Framework befasst sich mit dem Problem der Konfliktauflösung bei kollaborativer Bearbeitung und sorgt dafür, dass alle Nutzer denselben Inhalt sehen und Konflikte auf natürliche Weise aufgelöst werden.
- Anders als beliebte Werkzeuge des Web-Ökosystems wie CRDTs (Conflict-Free Replicated Data Types) verwendet Reflect die in der Videospielbranche verbreitete Technik der Transactional Conflict Resolution.
- Die besonderen Vorteile und Unterschiede von Reflect ergeben sich aus dieser grundlegenden Entscheidung im Kern der Synchronisierungs-Engine.
- Reflect verwendet JavaScript-Funktionen namens Mutators, um Änderungen umzusetzen, und erzeugt Mutation Records, die den Aufruf eines Mutators festhalten.
- Mutations werden lokal angewendet und an den Server gestreamt; der Server linearisiert sie anhand ihrer Ankunftszeit, um den nächsten autoritativen Zustand zu erzeugen.
- Reflect kann schnelllebige Anwendungen verarbeiten und weitere Mutations hinzufügen, während noch auf die Bestätigung vorheriger gewartet wird.
- Das Framework benötigt einen schnellen Datenspeicher, der Zurückspulen, Forks und Branch-Erstellung unterstützt, sowie einen schnellen serverseitigen Speicher, der mit eingehenden Mutations Schritt halten kann.
- Der Ansatz von Reflect lässt sich gut verallgemeinern und eignet sich für unterschiedliche Aufgaben wie arithmetische Operationen, Listenoperationen und die Durchsetzung höherstufiger Invarianten.
- Der Server von Reflect ist autoritativ, berechnet die Ergebnisse von Mutations selbst erneut und stellt sicher, dass alle Clients diese Ergebnisse sehen können.
- Diese Server-Autorität ermöglicht fein abgestufte Authentifizierung und die Ausführung weiteren Codes auf dem Server.
- Reflect bietet außerdem Vorteile wie Schema-Validierung und Migrationen.
- Die Synchronisierungsstrategie von Reflect, Transactional Conflict Resolution, ist einfach, flexibel und leistungsfähig und damit eine gute Wahl für den Bau von Multiplayer-Anwendungen.
1 Kommentare
Hacker-News-Kommentare