CRDT (Conflict-free Replicated Data Types) — класс data structures, которые можно независимо обновлять на разных replicas и затем merge deterministically без conflict resolution. Основа collaborative editors (Notion, Figma, Linear). Типы: G-Counter (grow-only counter), LWW-Set (last-write-wins), RGA (replicated growable array для text). Библиотеки: Yjs, Automerge.
Ниже: подробности, пример, смежные термины, FAQ.
Бесплатный онлайн-инструмент — проверка HTTP-заголовков: результат мгновенно, без регистрации.
// Yjs collaborative text
const ydoc = new Y.Doc();
const ytext = ydoc.getText('content');
ytext.insert(0, 'Hello');
// Syncs over WebSocket — other users see updateCRDT (Conflict-free Replicated Data Types) активно используются в разработке распределённых систем и приложений, требующих синхронизации данных между несколькими узлами. Примеры применения:
Практическое применение CRDT позволяет разработчикам создавать более надёжные и масштабируемые приложения.
Существует несколько типов CRDT, каждый из которых предназначен для решения определённых задач. Основные типы:
Выбор типа CRDT зависит от требований к приложению и характера данных, которые необходимо синхронизировать.
Для работы с CRDT существует несколько библиотек и инструментов, которые упрощают разработку приложений. Некоторые из них:
Использование этих библиотек и инструментов позволяет разработчикам быстро и эффективно внедрять CRDT в свои проекты.
OT (Google Docs) — server-authoritative, transforms operations. CRDT — peer-to-peer compatible, merging без server. CRDT выигрывает для offline-first.
Yjs handles thousands edits/sec. Automerge медленнее но более featureful. Both в production (Linear, Figma).
Нет — overhead. CRDT имеет смысл начиная с collaborative editing или true offline-first UX.
Бесплатный тариф — 10 мониторов, проверки каждые 5 мин, без карты. Платные тарифы — интервал от 1 минуты и проверки из нескольких регионов.