Mantıksal Saatler — Sunucuların Saati Farklıysa Hangisi Önce Oldu?
Önce şunu oku: Lider Seçimi ve Split-Brain — Ağ Bölününce Kim Karar Verir?
30 saniyede özet
Farklı makinelerin saatleri birkaç milisaniye, bazen saniyeler kayar; zaman damgasına göre sıralanan bir kayıt, sonucu sebebinden önce gösterebilir. Lamport sayacı sebebi hep önce koyar, vektör saati eşzamanlı olanı da söyler.
Ayşe saat 10:05’te Bora’ya gelip gelmeyeceğini soran bir mesaj yazıyor. Bora hemen cevap veriyor, ama onun saati üç dakika geri ve mektubuna 10:02 yazıyor. Mektupları üzerlerindeki saate göre dizen biri, cevabın sorudan önce yazıldığını sanır.
-
Bayt: Dolandırıcılık alarmı! Müşteri 800 TL çekmiş, ama hesapta henüz para yokmuş.
-
Sen: Müşteri önce 1.000 TL yatırdığını söylüyor. Kayıtta yatırma, çekimden sonra görünüyor.
-
Bayt: Kayıtları zaman damgasına göre sıralıyoruz. Zaman yalan söyleyemez ki?
-
Bayt: Zaman söyleyemez. Ama mobil sunucunun saati söyleyebilir.
Saatler neden yalan söyler?
Her makinenin saati biraz hızlı ya da yavaş çalışır; NTP onları düzenli olarak düzeltir, ama aradaki farkı sıfırlayamaz. Buna saat kaymasıFarklı makinelerin saatleri arasındaki fark. NTP onu küçültür ama sıfırlamaz; yakın iki olay zaman damgasına göre ters sıralanabilir.Sözlükte gör → denir.
İki olay birbirine bu kaymadan daha yakınsa, zaman damgaları onları ters sıralayabilir. Simülatörde mobil sunucunun saati dört saniye geri: para çekimi, dayandığı yatırmadan önce görünüyor.
Kafam karıştı, daha basit anlat
Farklı makinelerin saatleri biraz farklıdır. Birbirine yakın iki olayı saatlerine göre sıralarsan ters dizebilirsin.
Farklı sunuculardaki olayları zaman damgasına göre sıralamak neden yanıltabilir?
NTP kullanan sunucularda saat kayması ne olur?
Sayaç taşımak
Her sunucu bir sayaç tutuyor, her olayda bir artırıyor ve mesajla birlikte gönderiyor; alan, kendi sayacını gördüğünün bir fazlasına çıkarıyor. Yatırma (sayaç 1) mobil sunucuya bildirildi. Mobil sunucudaki çekim, yatırmadan önce sıralanabilir mi? Cevabı göster
Sıralanamaz. Mobil sunucu bildirimi alınca sayacını en az 2 yapar; çekim 3 olur. Sebep, sonucundan her zaman küçük bir sayı taşır.
Adım adım oku
- Ayşe yazdı: saatinde 10:05.
- Bora cevap verdi, saati geri: 10:02.
- Saate göre sırala: cevap sorudan önce.
- Numara taşı: cevap, sorudan büyük.
Bu, Lamport sayacıHer olayda bir artan ve mesajla taşınan sayı. Alan, kendi sayacını gördüğünün bir fazlasına çıkarır; sebep hep sonuçtan küçük kalır.Sözlükte gör →. Sebebi hep sonuçtan önce koyar, ama birbirini hiç görmemiş iki olayı da bir sıraya dizer; aslında aralarında bir sıra yoktur.
Bir vektör saatiHer sunucu için ayrı bir sayaç tutan mantıksal saat. İki olayın birbirini görüp görmediğini, yani eşzamanlı olup olmadığını da söyler.Sözlükte gör → her sunucu için ayrı bir sayaç taşır. İki olayın vektörlerinden hiçbiri öbüründen küçük değilse, o olaylar eşzamanlıdır: hiçbiri öbürünü bilmeden oldu.
Kafam karıştı, daha basit anlat
Lamport sayacı sebebi önce koyar. Vektör saati, iki olayın birbirini hiç görmediğini de söyler.
Lamport sayacında bir sunucu mesaj aldığında ne yapar?
Vektör saati Lamport sayacının veremediği hangi bilgiyi verir?
Kendin gör
Denetim kaydı: olaylar hangi sırada?
Tohum 84068Gerçek sıra: yatırma → (ücret, bakiye gösterimi) → çekim → defter kaydı
Oynat ya da adımla: kayıt satır satır dolacak.
Şu an ne oldu?
Her sunucunun kendi saatine göre sırala
S2’nin saati 4 saniye geri. Gerçekte önce para yatırıldı, sonra çekildi.
Görevler0/3
Para çekimi, yatırmadan önce listelensinaçık
İpucu
Sunucuların kendi saatine güven.
Hiçbir olay sebebinden önce listelenmesinaçık
İpucu
Mesajlarla birlikte bir sayaç taşı.
Ücret kesintisinin S2’deki olaylarla eşzamanlı olduğunu gösteraçık
İpucu
Sunucu başına bir sayaç.
Olay günlüğü (0)
Henüz olay yok. Oynat veya adımla.
- Varsayılanla oynat. Mobil sunucunun geri saati, bakiye gösterimini ve çekimi yatırmadan önceye koydu.
- “Lamport sayacı” seç. Hiçbir olay sebebinden önce değil. Ama ücret kesintisi, ilgisiz olduğu hâlde bakiye gösteriminden önce sıralandı.
- “Vektör saati” seç. Sıra yine doğru; ücret kesintisi üç olayla eşzamanlı olarak işaretlendi.
Mobil sunucunun saati 4 saniye geri. Kayıt zaman damgasına göre sıralanıyor. Ne görülür?
Lamport sayısı 2 olan olay ile 5 olan olay için kesin olarak ne söylenebilir?
Tuzaklar
Mantıksal saati her yerde kullanmak. Aynı hesabın bütün olaylarını tek bir sıralayıcıdan geçirmek çoğu zaman yeter: Kafka’da hesap numarasını anahtar yap, o hesabın olayları tek bölümde ve sırayla kalır.
Zaman damgasını sıralama için kullanmak. Zaman damgası insanlara “ne zaman” sorusunu cevaplamak içindir. Olay sırası için sayaç ya da sıralayıcı kullan.
Lamport sayacından eşzamanlılık çıkarmak. Lamport sayacı küçük olan olay her zaman önce olmuş değildir; yalnızca sonra olmadığı kesindir.
Kafam karıştı, daha basit anlat
Aynı hesabı tek sıradan geçir, zaman damgasını sıralama için kullanma, Lamport sayısından eşzamanlılık çıkarma.
Aynı hesabın olaylarını sırayla işlemenin en basit yolu nedir?
Derinleş · Hesap olayları: sıralayıcı ve Lamport sayacı 4 dosya · ~72 satır · ilk okumada atlayabilirsin
Kendini sına
NTP kullanan sunucuların saatleri birebir aynıdır.
Vektör saatinde [1,2,0] ve [2,0,0] olayları için ne söylenir?
Aklında kalacak üç şey
- 1 Farklı makinelerin saatleri olay sırasını kanıtlamaz. NTP kaymayı küçültür ama sıfırlamaz; birbirine yakın iki olay ters sıralanabilir.
- 2 Lamport sayacı her olayda bir artar ve her mesajla taşınır; alan, kendi sayacını gördüğünün bir fazlasına çıkarır. Böylece sebep her zaman sonuçtan önce gelir.
- 3 Vektör saati her sunucu için ayrı bir sayaç tutar ve iki olayın birbirini hiç görmediğini, yani eşzamanlı olduğunu da söyler. Çoğu zaman en basit çözüm, aynı hesabın olaylarını tek bir sıralayıcıdan geçirmektir.
4 kart sonraki derste seni bekliyor