Fondamentalmente, l'orologio lamport aiuta l'host a ordinare gli eventi piuttosto che l'ora esatta. In che modo tutti gli orologi logici finiscono per essere convergenti a lungo termine?
Fondamentalmente, l'orologio lamport aiuta l'host a ordinare gli eventi piuttosto che l'ora esatta. In che modo tutti gli orologi logici finiscono per essere convergenti a lungo termine?
Hai assolutamente ragione riguardo al fatto che non si tratti del tempo esatto. Non ci importa nemmeno cosa sia il tempo reale. Ci preoccupiamo di mantenere gli orologi sincronizzati l'uno con l'altro. Questo può essere reso evidente questo psudocode da wikipedia
L'algoritmo per l'invio di un messaggio:
time = time+1;
time_stamp = time;
send(message, time_stamp);
L'algoritmo per ricevere un messaggio:
(message, time_stamp) = receive();
time = max(time_stamp, time)+1;
Lo schema essenziale qui è la vittoria del clock più veloce. Questo non è un buon modo per mantenere il tempo reale dal momento che qualsiasi orologio ha più probabilità di guadagnare tempo come perdere tempo. Ma assicura che nessun messaggio sia criptato dalle correzioni. Dal momento che tutto ciò che stiamo cercando di fare è creare un ordine affidabile, se parziale, dei messaggi, non ci interessa che gli orologi atomici in Colorado dicano che siamo lontani.
Puoi chiamare questo comportamento "converged" se vuoi, ma lo vedo come se tutti gli orologi fossero trascinati in avanti da un orologio iperattivo perché ci interessa di più essere sincronizzati piuttosto che essere corretti.
Leggi altre domande sui tag multithreading distributed-system