Секреты работы онлайн-редакторов: что происходит при совместном редактировании? Yjs, CRDT, и другие магические слова

Wait 5 sec.

Представьте: вы и коллега в разных уголках планеты, но курсоры ваши встречаются в документа онлайн редактора. Вы одновременно вставляете слова в одну и ту же позицию или удаляете фрагмент текста, который ваш коллега в этот момент редактирует. Казалось бы, результат должен превратиться в хаос, но всё складывается в единую, логичную версию текста — несмотря на расстояния, задержки и одновременные правки. При этом вы даже не ждете, пока ваши изменения согласуются с общим состоянием на сервере. Просто редактируете документ и можете быть уверены в том, что ваши изменения применятся.На деле за этим волшебством часто скрываются CRDT — структуры данных, делающие возможной децентрализованную синхронизацию. Я сам столкнулся с этим, когда работал над онлайн-совместным редактором: CRDT и библиотека Yjs буквально спасли мой проект от хаоса и сделали синхронизацию прозрачной.Меня зовут Никита Лыкосов, я занимаюсь фронтенд-разработкой в Doubletapp и предлагаю шаг за шагом разобраться, как устроена эта инженерная магия. Спойлер: это гораздо проще, чем кажется. Читайте в статье:• G-Counter — самый простой CRDT• Какие правила CRDT выполняются на примере G-Counter и зачем это нужно? • Массивы • Yjs: как устроено совместное редактирование на практике Читать далее