Google Docs benzeri gerçek zamanlı ortak düzenleme yüksek seviyede nasıl tasarlanır?

Cevap

Temel zorluk: birden fazla kullanıcı aynı belgeyi aynı anda düzenlediğinde, her istemci düzenlemeyi önce yerelde uygular (gecikmesiz his) ve sonunda herkesin aynı belgeye ulaşması (convergence) gerekir.

İki ana yaklaşım

OT (Operational Transformation)CRDT
FikirEşzamanlı işlemler birbirine göre dönüştürülürVeri yapısı, birleştirme her sırada aynı sonucu verecek şekilde tasarlanır
SunucuGenelde merkezi sunucu sırayı belirlerMerkezi sunucu şart değil, P2P ve çevrim dışı uygun
ÖrnekGoogle DocsFigma'nın modeli, Yjs, Automerge
ZorlukDönüşüm fonksiyonlarının doğruluğuBellek ve meta veri maliyeti

Örnek çakışma: belge abc. A 0. konuma X ekler, B 2. konumdaki c'yi siler. OT, B'nin işlemini A'nınkinden sonra uygularken silme konumunu 3'e kaydırır.

Mimari

  • İstemci ile WebSocket bağlantısı; işlemler küçük delta'lar olarak gönderilir.
  • Belge başına bir oturum sunucusu (belge ID'ye göre consistent hashing ile atanır) işlemleri sıralar ve diğer katılımcılara yayar.
  • İşlemler bir log olarak kalıcı yazılır; periyodik snapshot alınır, yeni gelen istemci snapshot + sonraki işlemleri yükler.
  • Presence: imleç konumları ve kim çevrim içi; kalıcı olması gerekmez, ayrı ve hafif bir kanaldan gider.
  • Çevrim dışı düzenleme: işlemler yerelde biriktirilir, bağlanınca gönderilir (CRDT'de doğal).
  • Sürüm geçmişi log'dan üretilir.

Mülakatta OT veya CRDT'nin matematiğini derinlemesine anlatmanız beklenmez; sorunu, iki yaklaşımın farkını ve bileşenleri net anlatmanız yeterlidir.

  1. Dikey ve yatay ölçekleme arasındaki fark nedir?KolaySistem TasarımıFull Stack
  2. Hangi cache stratejilerini biliyorsunuz?OrtaSistem TasarımıFull Stack
  3. REST ile GraphQL arasındaki farklar nelerdir?OrtaSistem TasarımıFull Stack
  4. Bit.ly benzeri bir URL kısaltma servisi tasarlayın.ZorSistem TasarımıFull Stack
  5. CDN nedir, nasıl çalışır ve hangi durumlarda kullanılır?KolaySistem TasarımıFull Stack
  6. Bir bildirim (notification) sistemi nasıl tasarlanır?OrtaSistem TasarımıFull Stack

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle