Anteriormente hemos descrito por qué pensamos Es hora de dejar el brinco segundo en el pasado. En el paisaje digital en rápida transformación flagrante, la presentación de nuevos segundos de brinco para dar cuenta de la desaceleración a extenso plazo de la rotación de la Tierra es una habilidad arriesgada que, francamente, que, francamente, es hace más daño que acertadamente. Esto es particularmente cierto en el espacio del centro de datos, donde nuevos protocolos como Protocolo de tiempo de precisión (PTP) están permitiendo que los sistemas se sincronizaran hasta la precisión de nanosegundos.
Con la demanda cada vez maduro de una maduro distribución de tiempo de precisión, y El papel más importante de PTP para la sincronización del tiempo En los centros de datos, debemos considerar cómo encarar los segundos LEAP en el interior de los sistemas que usan PTP y, por lo tanto, son mucho más sensibles al tiempo.
Leap Second Manching: una opción más allá de su tiempo
El segundo manchado de Leap Second es un proceso de ajustar las velocidades de los relojes para acomodar la corrección que ha sido un método global para manejar segundos de brinco. En Meta, tradicionalmente hemos centrado nuestro esfuerzo de manchado en NTP ya que ha sido el habitual de facto para la sincronización del tiempo en los centros de datos.
En grandes implementaciones de NTP, la segunda mancha de LEAP se realiza generalmente en el Stratum 2 (capa), que consiste en servidores NTP que interactúan directamente con los clientes NTP (el clase 3) que son los usuarios aguas debajo del servicio NTP.

Hay múltiples enfoques para manchar. En el caso de NTP, se pueden aplicar fórmulas de manchas lineales o cuadráticas.
A menudo se prefiere el manchado cuadrático adecuado a la naturaleza en capas del protocolo NTP, donde se alienta a los clientes a ajustar dinámicamente su intervalo de votación a medida que aumenta el valencia de la corrección irresoluto. Esta opción tiene sus propias compensaciones, como ajustes inconsistentes, que pueden conducir a diferentes títulos de compensación en una gran flota de servidores.
El manchado recto puede ser superior si una flota completa se pedestal en las mismas fuentes de tiempo y realiza el manchado al mismo tiempo. En combinación con ciclos de sincronización más frecuentes de típicamente una vez por segundo, este es un enfoque más predecible, preciso y confiable.

Manejo de segundos de brinco en PTP
A diferencia de NTP, que se sincroniza a nivel de milisegundos, PTP proporciona un nivel de precisión típicamente en el rango de nanosegundos. En este nivel de precisión, incluso la mancha recto periódica crearía demasiado delta en toda la flota y violaría las garantías proporcionadas a los clientes.
Para manejar segundos de brinco en un entorno PTP, tomamos un enfoque algorítmico que cambia el tiempo automáticamente para los sistemas que usan PTP y combinan esto con vigor en usar Tiempo universal coordinado (UTC) sobre tiempo atómico internacional (TAI).
Sencillo
En Meta, los usuarios interactúan con el servicio PTP a través del fbclock biblioteca, que proporciona una tupla de títulos, {ENTERIOR_NS, Último_ns}, que representa un intervalo de tiempo denominado Ventana de incertidumbre (wou). Cada vez que se candela a la biblioteca durante el período de manchado, ajustamos los títulos de retorno en función del cálculo de mancha, que cambia los títulos de tiempo 1 nanosegundos cada 62.5 microsegundos.
Este enfoque tiene una serie de ventajas, que incluyen ser completamente apádico y reproducible. El servicio continúa utilizando marcas de tiempo TAI, pero puede devolver las marcas de tiempo UTC a los clientes a través de la API. Y, a medida que el tiempo de inicio está determinado por tzdata Marcas de tiempo, la posición de manchado flagrante se puede determinar incluso posteriormente de reiniciar un servidor.
Este enfoque viene con algunas compensaciones. Por ejemplo, a medida que la táctica de manchas de brinco difiere entre los ecosistemas NTP (cuadráticos) y PTP (lineales), los servicios pueden tener dificultades para igualar las marcas de tiempo adquiridas de diferentes fuentes durante el período de manchas.
La diferencia entre dos enfoques puede significar diferencias de más de 100 microsegundos, creando desafíos para los servicios que consumen el tiempo de entreambos sistemas.
UTC Over Tai
La táctica de manchado que implementamos en nuestra biblioteca FBCLOCK muestra un buen rendimiento. Sin confiscación, todavía introduce deltas de tiempo significativos entre múltiples hosts durante el período de manchado, a pesar de estar completamente apátrate y usar tamaños de pasos pequeños (1 nanosegundos) y fijos.
Otro inconveniente significativo proviene de trabajos de ejecución periódica. El tiempo de mancha significa que nuestra programación está apagada por cerca de 1 milisegundo posteriormente de 60 segundos para servicios que se ejecutan a intervalos precisos.

Esto no es ideal para un servicio que garantice la precisión y precisión a nivel de nanosegundos.
Como resultado, recomendamos que los clientes usen TAI sobre UTC y, por lo tanto, eviten tener que altercar con los segundos de brinco. Desafortunadamente, sin confiscación, en la mayoría de los casos, la conversión a UTC todavía se requiere y finalmente debe realizarse en algún puesto.
PTP sin segundos de brinco
En Meta, apoyamos el fresco impulso para Congele cualquier nuevo brinco segundos posteriormente de 2035. Si podemos cesar la presentación de nuevos segundos de brinco, entonces toda la industria puede abandonarse en UTC en puesto de TAI para un cronometraje de maduro precisión. Esto simplificará la infraestructura y eliminará la aprieto de diferentes soluciones de manchas.
En última instancia, un futuro sin segundos es uno en el que podemos transigir los sistemas a mayores niveles de precisión de tiempo de tiempo de guisa más sencillo y apto.