Conflict resolution
- React Native kursu
- İleri seviye
- Ders 34/83
- 5 dk
Ç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
export function resolveConflict(local, server) {
// last-write-wins ile çatışmayı çöz
}Örnek çözüm
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
const strategy = '____';
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?
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.