O mecanismo de descoberta de serviço de microsserviços é um método de localização dinâmica de instâncias de serviço para comunicação em uma arquitetura de microsserviços.
Depende principalmente do centro de registro para implementar o registro de serviços, consultas e suporte ao balanceamento de carga, melhorando assim a escalabilidade e flexibilidade do sistema.
1. Conceitos básicos
A descoberta de serviço refere-se ao processo de descoberta e identificação automática de serviços disponíveis em um sistema distribuído.
Numa arquitetura de microserviços, uma vez que os serviços são divididos em múltiplos serviços pequenos e autónomos que estão dispersos em diferentes servidores, é necessário um mecanismo de descoberta de serviços para garantir uma comunicação eficaz entre os serviços.
2. Etapas principais
Registro de serviço:
Quando uma instância de microsserviço é iniciada, ela registra suas informações de localização de rede (como endereço IP e número de porta) e identificação de serviço no centro de registro de serviços.
Este processo de registo é normalmente automático e não requer intervenção humana.
O centro de registro é responsável por manter as informações de registro de todas as instâncias de serviço e dar suporte ao registro dinâmico e ao cancelamento de registro de instâncias de serviço.
Consulta de serviço:
Quando um microsserviço precisa chamar outro microsserviço, ele consulta o registro do serviço para obter o endereço de rede atualmente disponível do serviço necessário.
O centro de registro retorna a lista de endereços das instâncias de serviço e o chamador pode selecionar uma instância de serviço para comunicação de acordo com a política de balanceamento de carga.
3. Componentes principais
Cadastro de Serviços:
É o componente central do mecanismo de descoberta de serviço e é responsável por gerenciar e armazenar as informações de registro de todas as instâncias de serviço.
Ele fornece interfaces API para instâncias de serviço registrarem e cancelarem operações e também oferece suporte a consumidores de serviço para consultar as informações de registro de instâncias de serviço.
Provedor de serviço:
É uma instância de microsserviço que fornece um serviço específico.
Ele registrará suas próprias informações de serviço no registro de serviço quando for iniciado e cancelará o registro de suas próprias informações de serviço quando sair.
Consumidor de serviço:
É uma instância de microsserviço que precisa chamar outros serviços.
Obtém o endereço de rede do serviço requerido consultando o registro do serviço e estabelece comunicação com ele.
4. Como implementar o mecanismo de descoberta de serviço
O mecanismo de descoberta de serviço pode ser dividido em dois tipos: descoberta de cliente e descoberta de servidor de acordo com o método de implementação:
modo de descoberta do cliente:
O cliente é responsável por consultar a central de registro, obter uma lista de serviços disponíveis e interagir diretamente com as instâncias de serviço de acordo com a política de balanceamento de carga.
A vantagem é que o cliente pode formular estratégias de balanceamento de carga com flexibilidade, reduzindo a dependência da central de registro de serviços.
A desvantagem é que o cliente precisa implementar uma lógica de descoberta complexa, o que aumenta a complexidade do código e os custos de manutenção.
Modo de descoberta de servidor:
O cliente envia uma solicitação ao servidor (geralmente um gateway de API ou proxy de serviço), e o servidor é responsável por consultar o centro de registro e encaminhar a solicitação para a instância de serviço real.
A vantagem é que simplifica a implementação do cliente e reduz a complexidade do código e os custos de manutenção.
A desvantagem é que aumenta a latência do sistema e os pontos de falha, pois todas as solicitações precisam ser encaminhadas através do servidor.
5. Vantagens do mecanismo de descoberta de serviço
Reduza o acoplamento entre serviços:
Os microsserviços não precisam conhecer diretamente o endereço de rede uns dos outros, eles só precisam se comunicar por meio do centro de registro de serviços.
Melhore a escalabilidade e a flexibilidade do sistema:
À medida que os serviços mudam dinamicamente (como expansão, redução, migração, etc.), o centro de registro de serviços pode atualizar as informações da instância de serviço em tempo real para garantir que a comunicação entre os serviços não seja afetada.
Suporta balanceamento de carga e failover:
O cliente pode obter a lista de endereços de diversas instâncias de serviço do centro de registro de serviços e selecionar uma delas para comunicação com base na política de balanceamento de carga. Quando uma instância de serviço está indisponível, o registro de serviço pode marcá-la automaticamente como não íntegra e evitar o envio de solicitações a ela.
6. Ferramentas comuns de descoberta de serviços
Eureca:
Ferramenta de descoberta de serviços desenvolvida pela Netflix, utilizando o modo de descoberta de cliente. É muito leve e fácil de integrar e usar.
Cônsul:
Ferramenta de descoberta de serviços e centro de configuração desenvolvida pela HashiCorp. Ele fornece uma solução relativamente completa, incluindo verificação de integridade do serviço e outras funções, e oferece suporte aos protocolos HTTP e DNS.
Funcionário do zoológico:
Apache ZooKeeper é um serviço de coordenação distribuída de código aberto que também pode ser usado para descoberta de serviços. Ele fornece bloqueios distribuídos, serviços de nomenclatura e outras funções e oferece suporte a uma variedade de bibliotecas clientes.
Na arquitetura de microsserviços, o mecanismo de descoberta de serviços realiza as funções dinâmicas de registro e consulta de instâncias de serviço por meio do centro de registro, reduzindo o acoplamento entre serviços e melhorando a escalabilidade e flexibilidade do sistema.