In una normale applicazione, una semplice chiamata a time.Now()
nella maggior parte delle lingue è sufficiente per ottenere un timestamp, ma cosa succede in un'applicazione web distribuita su più server? A quanto ho capito, time.Now()
utilizzerà l'ora corrente del sistema, ma non c'è un modo affidabile di dire dopo il fatto se quel tempo fosse sincronizzato con il resto delle macchine. A questo punto, i dati vengono archiviati nell'archiviazione persistente con timestamp incoerenti che non è un problema per i tempi creati / modificati durante l'inserimento in un database, ma un problema più grande durante il monitoraggio dei tempi degli eventi).
Il modo migliore che vedo per mitigare questo è quello di far sì che tutte le macchine richiedano un timestamp da una specifica macchina "master", ma poi ho pensato alla latenza? Cosa succede se la rete è occupata e la risposta è in ritardo? Ci sono molti difetti con questo metodo, ma non posso pensare ad un altro più affidabile che usare la CPU e le risorse di rete sincronizzando l'ora ogni pochi secondi.
Qual è la migliore pratica accettata / standard del settore qui?