Upgrade to Pro — share decks privately, control downloads, hide ads and more …

(UA) CRDT (Conflict-free Replicated Data Types) usage as a solution for data synchronization problem in distributed systems (iOS client)

(UA) CRDT (Conflict-free Replicated Data Types) usage as a solution for data synchronization problem in distributed systems (iOS client)

Slides of graduate work of master's degree in V. N. Karazin Kharkiv National University

Volodymyr Hryhoriev

September 25, 2021
Tweet

More Decks by Volodymyr Hryhoriev

Other Decks in Programming

Transcript

  1. Використання CRDT (Conflict-free Replicated Data Types) для рішення проблеми синхронізації

    даних в розподілених системах (iOS клієнті) Виконав студент групи МФ-61 Григор’єв В. В. Міністерство освіти і науки України Харківський національний університет імені В.Н. Каразіна Науковий керівник: Медведюк Д. І. Кваліфікаційна робота магістра
  2. Постановка задачі 1. Ознайомитися з проблемою синхронізації даних 2. Дослідити

    переваги й недоліки CRDT 3. Створити власну реалізацію CRDT 4. Продемонструвати результати практичного застосування CRDT
  3. Синхронізація даних ускладнюється якщо: • Виникають проблеми з мережею (сегментація

    мережі, офлайн режим роботи) • Відбуваються одночасні зміни даних (колоборативний режим роботи)
  4. Узгодженість в кінцевому випадку (Eventual Consistency) говорить про те, що

    як тільки всі вузли отримали всі операції, то через деякий час система прийде в узгоджений стан
  5. Ціль - розробити рішення, що не залежить від: • Бази

    даних • Транспорту (HTTP, WebSockets) • Інфраструктури серверної частини
  6. CRDT - це напіврешітка • ≤ - операція часткового порядку

    • ⊔ - операція об’єднання ◦ комутативність: A ⊔ B = B ⊔ A ◦ асоціативність: (A⊔B)⊔C=A⊔(B⊔C) ◦ ідемпотентність: A ⊔ A = A • sup(L, K) = M = L ⊔ K
  7. Базові приклади CRDT • Лічильники: GCounter, PNCounter • Регістри: LWWRegister,

    MVRegister • Множини: LWWSet, GSet, 2PSet, ORSet, AWSet, RWSet • Словники: ORMap, AWMap, RWMap • Прапорці: EWFlag, DWFlag
  8. API

  9. Клієнт: • iOS • Swift • CRDT • UserDefaults (Plist

    ~ XML) Сервер: • Vapor • Swift • CRDT • SQLite • Swagger Технології
  10. Переваги: • Автоматичне розв’ язання конфліктів • CRDT математично доведені

    • Незалежність від транспорту та БД Недоліки: • Великий обсяг повідомлень для CvRDT • Ускладнення прошарку моделі Висновок