CodeBlanks Logo Icon CodeBlanks

Conflict resolution

Çakışma çözümü öğrenirsin.

Çatışma çözümü

Çatışma, aynı kaydın hem cihazda hem sunucuda değiştirildiği durumdur. Örneğin kullanıcı çevrimdışıyken bir görevi 'tamamlandı' yapmıştır; aynı görevi başka bir cihazda 'devam ediyor' yapmıştır. Çevrimiçi olunca iki farklı sürüm çatışır.

Çatışma çözümü için üç yaygın strateji vardır. Sunucu kazanır: şunucudaki sürüm her zaman kabul edilir. Cihaz kazanır: cihazdaki sürüm kabul edilir. Birleştirme: iki sürümün alanları birleştirilir. En basit strateji 'son yazan kazanır' (last write wins); bu, zaman damgasına göre karar verir. updatedAt alanı büyük olan sürüm kabul edilir.

last-write-wins

last-write-wins stratejisi, iki sürümün updatedAt zaman damgalarını karşılaştırır. Daha yeni olan (daha büyük zaman damgası) kabul edilir; eski olan atılır. Bu strateji basit ve öngörülebilirdir; ancak kullanıcının bilerek yaptığı eski bir değişikliğin üzerine yazabilir.

Örnek: cihazdaki görev updatedAt: 1000, şunucudaki updatedAt: 2000. Şunucudaki daha yeni; bu yüzden şunucudaki kabul edilir, cihazdaki atılır. Bu karar if (local.updatedAt > server.updatedAt) return local; else return server şeklinde yazılır. Eşit zaman damgalarında sunucu kazanan sayılır; bu, dağıtık sistemlerde tutarlılık sağlar.

Uygulama Çatışmayı çöz

resolveConflict işlevini tamamla. Parametre olarak local ve server alır. if (local.updatedAt > server.updatedAt) return local; else return server yaz.

Başlangıç kodu

App.js
export function resolveConflict(local, server) {
  // last-write-wins ile çatışmayı çöz
}

Örnek çözüm

App.js
if (local.updatedAt > server.updatedAt) return local;
return server;

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Stratejiyi yaz

Soru
const strategy = '____';
Cevap
const strategy = 'last-write-wins';

Açıklama: last-write-wins son zaman damgasını kabul eder.

2 Stratejiyi amacına eşle

Kavram Anlamı
last-write-wins Zaman damgası
server wins Sunucu sürümü
device wins Cihaz sürümü
merge Alanları birleştirir

3 last-write-wins neye göre karar verir?

App.js
if (local.updatedAt > server.updatedAt) { ... }
  • Zaman damgasına Doğru cevap
  • İçerik boyutuna
  • Sürüm numarasına
  • İsim uzunluğuna

Açıklama: Zaman damgasına göre karar verir; yeni olan kazanır.

İleri seviye bölümündeki tüm dersler