Logo GH

Sincronizar tempo e deriva

1) Por que o tempo - componente arquitetônico

O tempo atinge todas as camadas: TTL e certificados, deadline RPC, ordem de eventos, logs e analistas, consenso e bloqueio. Um erro entre dezenas e centenas de milissegundos pode:
  • quebrar o Kerberos/OAuth/JWT (campos 'iat/nbf/exp');
  • distorcer métricas/trailers e alertas;
  • rolar corretores/clientes (temporizadores, retraias, backoff exponencial);
  • perturbar a ordem e a idimpotência nos cenários distribuídos.
Termos-chave:
  • Offset é a diferença de tempo local da referência.
  • Skew (separação) é a diferença entre os nós.
  • Draft (à deriva) - velocidade de saída do relógio (ppm) quando não há correção.
  • Jitter - variabilidade de atrasos/medidas.

2) Fontes e protocolos de tempo

2. 1 NTP (Network Time Protocol)

Stratos (Stratum 1 - diretamente de GNSS/rádio, Stratum 2 - de Stratum 1, etc).

Correção de duas formas:
  • slew (ajuste suave de frequência, seguro para aplicativos);
  • step (salto de tempo; indesejável na venda).
  • Implementações: crony, ntpd, systemd-timesyncd. Para servidores - de preferência crony.

2. 2 NTS (NTP over TLS)

Sincronização autenticada (proteção contra MITM e troca de tempo).
Recomendado para servidores de horário externos.

2. 3 PTP / IEEE 1588

Marcas de tempo de hardware (hardware timestamping) em NIC/ToR, milhões e microssegundos de precisão.
Modos: boundary/transparent clock, perfis de telecom/enterprise.
Usar para SLO rígido para ordem p99, HFT/telecom/indústria.

2. 4 GNSS (GPS/GLONASS) e PPS

Os receptores locais fornecem um PPS (pulse-por-segundo) de referência para o Stratum 1.
É importante considerar spufing/silenciamento - colocar antenas e monitor de integridade.

2. 5 Nuvens

Fontes de nuvem (intrínseca stratum-pool) reduzem off e jitter dentro do VPC.
Para ambientes híbridos - combine os parâmetros locais e de nuvem.

3) Tempo em OS e ferro

TSC/HPET/PTC: Os CPU modernos mantêm o TSC como um contador monótono rápido; fixa a frequência (invariant TSC).
Virtualização/contêineres: à deriva e «salto» com mais frequência. Hipervisor - serviço de tempo rigoroso; Os convidados são crony.
A economia de energia pode interferir na monotonia dos temporizadores - verifique as opções BIOS/UEFI.

4) Relógio monótono e «aço»

Wall-clock (tempo real, TZ/UTC) - para logs, marcas de eventos, pessoas.
Monotonic clock - para medição de intervalos/temporizações.

No código:
  • Linux: `CLOCK_MONOTONIC`.
  • C++: `std::chrono::steady_clock`.
  • Go: partes monótonas incorporadas 'time. Time 'em intervalos.
  • Java: `System. nanoTime () 'para longas, não para calendário.

Regra: Dedline e retais - em relógios monótonos; seriado/logado - em UTC.

5) Leap segundo/» leap smear» e armadilhas de calendário

O Leap segundo pode causar «00:59:60» ou uma repetição de segundo → galhos em temporais/métricas.

Abordagens:
  • Smear (flutuação suave de segundos em N horas).
  • Passo (indesejado).
  • Nunca dependa de um TZ/horário de verão local para a lógica; guarde o UTC e mostre no TZ do usuário.
  • Atualize o TZDB - mudanças políticas acontecem.

6) Alinhamento de ordem sem confiança em «parede»

Lamport clocks e Vector clocks - relações de causa e efeito sem relógio físico.
Hybrid Logical Clocks (HLC) - Combinam tempo físico e contador, resistentes a um pequeno skew.
Modelos como o TruTime - retornam o intervalo '[earliest, latest]' e exigem um commit-wait para ser seriado.

7) Efeitos do tempo sobre protocolos e sistemas

Segurança: O Kerberos permite um skew pequeno (normalmente se 5 minutos), TLS/certificados sensíveis a 'notBefore/notAfter', JWT a 'exp/nbf/iat'.
Corretores/filas: Os deadline de tarefas/visibility timeout dependem da hora certa.
SUBD/clusters: conflito de versões por 'updated _ at '/ts - digite HLC/versões, em vez de comparar wall-timestamps crus.
Streaming: distingue entre event time e processing time; configure watermarks e lateness.
Crone/Planificadores: A deriva leva a um «pouso »/duplo lançamento. Use intervalos e chaves monótonas.

8) Observabilidade e tempo SLO

8. 1 Métricas

`time. offset _ ms '(offset ao árbitro),' time. jitter_ms`, `stratum`, `root_delay`, `root_dispersion`.
Для PTP: `path_delay`, `grandmaster_offset`, `gm_identity`, `clock_class`.
Alerts: off> limiar (por exemplo, 100-500 ms), perda de fonte, step-correção.

8. 2 Diagnósticos

`chronyc tracking/sources/sourcestats`

`ntpq -p`, `ntpstat`

PTP: 'pmc', ferramentas de venda NIC/ToR.

8. 3 SLO/orçamento errado

Exemplo SLO: "median offset ≤ 1 ms, p99 offset ≤ 25 ms, no step em nós de prod; PTP grandmaster failover ≤ 2 s».

9) Práticas de configuração (Linux/containers/K8s)

9. 1 crony (recomendado)

Exemplo ('/etc/crony/crony. conf`):

pool time. example. org iburst maxsamples 9 nts makestep 0. 5 1 # one step at big error at start rtcsync # synchronize hardware clock leapsectz right/UTC # leap seconds from tzdata driftfile/var/lib/chrony/drift
Opções úteis:
  • `maxsources`, `minsamples/maxsamples`, `maxslewrate`.
  • Para o DC isolado é um árbitro local + GPS/PPS.

9. 2 Contêineres e nós

Faça a sincronização no hóspede; Os contentores usam o núcleo.
Em K8s - DaemonSet com crony ou agente de tempo node-level; impeça a entrada de tempo por aplicativos.

9. 3 pilhas PTP

NIC com timestamping de hardware, demônio PTP, boundary clocks em ToR.
Espalmar domínios PTP (perfis), proteger contra «maus» grandmaster.

10) Segurança do tempo

NTS/Autenticado NTP, filtros e rate-limit (reforço NTP - vetor DDoS).
Segurança PTP: isolamento L2, LCA para multicast, monitoramento spoofing GM.
GNSS: antenas com boa visão, detecção de spoofing/jamming, fontes fallback.

11) Máquinas de engenharia e código

11. 1 Deadline/temporizadores

Guarde os dedline como «partida monótona + delta», em vez de wall-timestamp absoluto.
Adicione sempre um estoque no skew (por exemplo, 2 x p99-skew esperado para o TTL token).

11. 2 Comparação de versões

Não se baseie em 'updated _ at' entre os nós. Use:
  • versionagem/ETag;
  • HLC/seq;
  • bloqueios otimistas.

11. 3 Logs e traçados

Sempre UTC; inclua o campo 'time _ offset _ ms' no logs do agente.
Amaldiçoe o event-time nos eventos de rastreamento.

11. 4 Processamento de leap segundo

Selecione uma política (smear/step) uniformizada em todos os nós.
Teste: as métricas não devem ser «quebradas» em segundo.

12) Impacto sobre domínios

Auth: tokens - Leve em conta «clock skew allowance» (por exemplo, de 2 a 5 minutos).
Payments/seqüências de tempo: Arredem os intervalos em vez de tempo absoluto.
Corretores: horários de retrações - em relógios monótonos.
BD/TTL: TTL em Redis/DB - baseado no relógio local - coloque o estoque.
Analista: agregações de tempo - Use uma única UTC e sincronização ingestão.

13) Playbooks de teste (Game Days)

Draft inhation: desviar artificialmente o relógio para +/- M; verificar auth, corretores, SLO.
Outage NTP: desativar as fontes, monitorar o drive e a conversão automática.
Leap segundo/smear: simulação de chegada leap, avaliação de gráficos/temporizadores.
PTP GM failover: verificar a hora de mudança e off-set depois.
VM suspend/resume: certifique-se de que não há «saltos» e step nos hóspedes.

14) Anti-pattern

Comparar eventos de diferentes nós em wall-time sem HLC/seq.
Coloque os «locais de linha» do tempo (com TZ) no banco de dados em vez do UTC.
Permitir que aplicativos façam 'data -s '/' timedatectl set-time'.
Activar correções step na venda sem planejamento.
Ignorar atualizações TZDB e regras de horário de verão.
Usar wall-clock para backoff/temporizadores/token-TTL sem reserva para skew.
Tentar «tratar a ordem» com tempo físico em vez do relógio lógico.

15) Folha de cheque de implementação

  • Política unificada: NTP (com NTS) ou PTP; uma lista de fontes confiáveis.
  • Os nós estão configurados para slew, step apenas no início.
  • Política unificada leap segundo (smear/step) para todos os clusters.
  • Monitoramento off, jitter, stratum/PTP indicadores; Alertas.
  • Aplicativos usam relógios monótonos para intervalos/deadline.
  • Para ordem/conflito - HLC/versões, não wall-timestams.
  • Reservas em skew em TTL de tokens, certificados, agendamentos.
  • K8s/VM: sincronização em hosts, contêineres sem permissão para alterar o tempo.
  • Documentação e runbooks sobre falhas de tempo, game days no calendário CI/CD.
  • Atualizações regulares do TZDB, verificação de comportamento em eventos DST/leap.

16) FAQ

Q: Quando você precisa de PTP em vez de NTP?
A: Quando o SLO requer microssegundos-dezenas de microssegundos (TV/HFT/indústria) e há suporte para marcas de hardware na rede/mapas.

Q: Quanto colocar no clock skew?
A: Para um NTP típico na DC - dezenas a centenas de ms (p99); coloque 2 x reserva. Com PTP, unidades a dezenas de Iss.

Como sobreviver ao leap segundo?
A: Usar smear e políticas idênticas em todos os lugares; testar gráficos/agregadores e temporizadores.

Pode depender de wall-clock para deadline?
A: Não. Apenas um relógio monótono + reserva em skew.

Como guardar «tempo» na Base de Dados?
A: UTC ('timestamptz'), mais versões/HLC para resolver conflitos; Não guarde áreas locais nos dados.

17) Resultados

Tempo seguro é protocolo + política + disciplina no código. Sincronize nódulos (NTP/NTS ou PTP), use relógios para intervalos, UTC para dados, HLC/versão de ordem, coloque reservas em skew, monitora o off-set e realize o game days regularmente. Assim, você vai evitar as bagagens de autenticação «mística», divergências de eventos e SLO instável.

Contact

Entrar em contacto

Contacte-nos para qualquer questão ou necessidade de apoio.Estamos sempre prontos para ajudar!

Telegram
@Gamble_GC
Iniciar integração

O Email é obrigatório. Telegram ou WhatsApp — opcionais.

O seu nome opcional
Email opcional
Assunto opcional
Mensagem opcional
Telegram opcional
@
Se indicar Telegram — responderemos também por lá.
WhatsApp opcional
Formato: +indicativo e número (ex.: +351XXXXXXXXX).

Ao clicar, concorda com o tratamento dos seus dados.