Skip to content
Latchkey

O Que É Service Discovery? Encontrando Serviços Dinamicamente

Service discovery é o mecanismo pelo qual serviços localizam uns aos outros dinamicamente, consultando os endereços atuais das instâncias em um registry em vez de depender de endpoints fixos no código.

Em ambientes dinâmicos, instâncias de serviço iniciam, param e se movem constantemente, então seus endereços mudam. Service discovery mantém um registry vivo do que está rodando onde, e os clientes o consultam para encontrar uma instância saudável. É isso que permite aos deploys adicionar e remover instâncias sem ninguém atualizar strings de conexão à mão.

Um registry vivo

Instâncias se registram quando iniciam e cancelam o registro quando param. Os clientes consultam o registry, ou uma camada de DNS ou proxy apoiada por ele, para encontrar o endereço atual de um serviço.

Client-side versus server-side

  • Client-side: o cliente consulta o registry e escolhe uma instância.
  • Server-side: um load balancer o consulta e roteia pelo cliente.
  • Baseado em DNS: o registry é exposto através de consultas de DNS.

Saúde e cancelamento de registro

O discovery se integra com health checks para que apenas instâncias saudáveis sejam retornadas. Uma instância que falha em seu check é removida do registry, mantendo o tráfego longe dela.

Service discovery em deployments

Quando um deploy lança novas instâncias, elas se registram e imediatamente começam a receber tráfego; as antigas cancelam o registro conforme drenam. Essa participação dinâmica é o que torna os rolling deploys contínuos.

Por que as consultas falham

Se um serviço ainda não estiver registrado, ou o registry estiver brevemente inconsistente durante um deploy, um cliente pode não encontrar uma instância saudável e a chamada falha até a participação se estabilizar.

Lacunas transitórias de discovery

Uma lacuna momentânea em que nenhuma instância está registrada ainda é transitória e se resolve conforme o deploy se estabiliza. Os runners da Latchkey fazem retry de falhas transitórias de discovery e de conexão a endpoints comuns durante a verificação de deploy, para que uma breve lacuna no registry não faça o passo falhar.

Principais conclusões

  • Service discovery permite que clientes encontrem instâncias atuais e saudáveis a partir de um registry vivo.
  • Integra-se com health checks e viabiliza rolling deploys sem interrupção.
  • Uma breve lacuna no registry durante um deploy é transitória e normalmente se resolve no retry.

Guias relacionados