Estoy buscando escribir una sencilla capacidad de sincronización en mi aplicación y una de las preocupaciones que surgió es la sincronización del tiempo entre dos computadoras remotas, cada una con su propio reloj (en particular con respecto a las fechas de modificación de archivos/objetos).Sincronización (de relojes) entre dos computadoras remotas
Estoy seguro de que se han realizado muchas investigaciones sobre este tema y no quiero ser demasiado teórico, pero me pregunto si hay algunas mejores prácticas aceptadas para minimizar las discrepancias temporales entre los relojes remotos.
Por ejemplo, un comienzo es usar siempre la hora universal (UTC) ya que evita los problemas de la zona horaria, pero no hay garantía de que dos computadoras tengan exactamente la misma hora del sistema. Afortunadamente, el trabajo que estoy haciendo no es muy fino, por lo que no es una preocupación terriblemente importante, pero todavía tengo curiosidad.
Una solución sería utilizar siempre el mismo reloj en ambos extremos, como un servidor de tiempo global, en lugar del reloj del sistema local. Es de suponer que esto (combinado con bloqueos de recursos compartidos) podría garantizar una superposición accidental del tiempo sincronizado, pero no es muy práctico.
Un pensamiento que me vino a la cabeza sería sincronizar cada nodo (cada cliente) con un desplazamiento calculado en algún punto anterior, quizás calculando el desplazamiento del reloj del sistema con un servidor horario global. Esto solo tendría que hacerse ocasionalmente ya que la compensación en sí misma probablemente no cambiaría demasiado en un corto período de tiempo.
Actualización: Permítanme agregar que no estoy interesado en realmente sincronizar los relojes del sistema de dos computadoras - supongo que el sistema operativo manejará esto en la mayoría de los casos. Esta es solo una cuestión de cómo asegurar que dos instancias de una aplicación utilicen tiempos sincronizados, aunque en este día y época supongo que los relojes del sistema casi con seguridad se sincronizarían dentro de algún delta muy pequeño de todos modos.
Busqué el artículo de Lamport, y parece ser ampliamente citado en la discusión de la sincronización del reloj. Desafortunadamente, [parece] (http://www.amazon.com/Distributed-Systems-Principles-Paradigms-2nd/dp/0132392275) que este algoritmo no es adecuado para aplicaciones en tiempo real (como el discutido [aquí] (http://stackoverflow.com/questions/12760388/how-to-set-a-variable-that-represents-a- time-in-the-future-in-absolute-terms-obj)) .. ¿Algún consejo sobre algoritmos de sincronización de reloj en tiempo real que no depende de NTP? – abbood