Tecnologia Java Finalização (6) - Microsserviços

1. Descoberta de registro de serviço

O registro de serviço é para manter uma lista de serviço, que gerencia todos os endereços de serviço no sistema. Quando um novo serviço é iniciado, ele envia seu próprio endereço de serviço para a lista de serviço. O método de chamada do serviço pode enviar diretamente uma aquisição de lista de serviço solicite à lista de serviços. , você pode obter todos os endereços de serviço, basta selecionar o serviço necessário.

Existem muitas ferramentas de registro de serviços, como ZooKeeper, Consul, Etcd, Netflix, Eureka

Existem duas formas de registro de serviço: registro de cliente e registro de terceiros .

(1) Cadastro de clientes: O cadastro de clientes é o próprio serviço responsável pelo cadastramento e cancelamento. Ao iniciar o serviço, ele envia o endereço do serviço para a central de cadastro, e quando o serviço sai do ar, ele se cancela. Durante o período, ele também precisa enviar dados de heartbeat para o centro de registro O mecanismo de heartbeat é O mecanismo usado pelo centro de registro para determinar se o serviço existe, geralmente pelo centro de registro para monitoramento de heartbeat.

Desvantagens do registro do cliente: O registro é associado à funcionalidade do serviço.

(2) Registro de terceiros: Um serviço de registro independente, o Registrador, é responsável pelo registro e cancelamento do registro de terceiros. Quando o serviço é iniciado, o Registrador é notificado para realizar as operações de registro e, em seguida, o Registrador é responsável por iniciar o registro para a central de cadastro, mantendo atendimento e cadastro A pulsação da central, quando o serviço fica indisponível, o Registrador inicia o trabalho de destruição.

Desvantagens do registro de terceiros: O registrador deve ser um sistema altamente disponível, caso contrário, o trabalho de registro não pode ser realizado.

Existem duas formas de descoberta de serviço: descoberta do lado do cliente e descoberta de terceiros

(1) Descoberta do cliente: O cliente é responsável por consultar os endereços de serviço disponíveis e implementar o balanceamento de carga. Esse método é o mais direto e conveniente, mas sua desvantagem é que a mesma lógica precisa ser escrita repetidamente em vários idiomas.

(2) Descoberta do lado do servidor: O servidor precisa adicionar um serviço de roteador adicional, e a solicitação de serviço será enviada primeiro ao roteador e, em seguida, o roteador será responsável por consultar serviços e balanceamento de carga. A desvantagem desse método é que a alta disponibilidade do Roteador deve ser garantida.


2. Gateway de API

O API Gateway é um servidor, que também pode ser considerado o único canal para entrar no sistema. O API Gateway encapsula internamente uma arquitetura de sistema e fornece APIs aos clientes. Ele também pode implementar muitas funções, como autorização, monitoramento e balanceamento de carga . , cache, fragmentação e gerenciamento de solicitação, processamento de resposta estática, etc.

O papel do API Gateway é o principal responsável pelo encaminhamento de solicitações, síntese e conversão de protocolo. Todas as solicitações do cliente devem passar pelo Gateway e depois roteadas para os microsserviços correspondentes. Ele pode chamar vários microsserviços para processar uma solicitação e agregar vários serviços como um Como resultado, também é possível converter entre protocolos da Web e protocolos não compatíveis com a Web usados ​​internamente, como o protocolo HTTP e o protocolo WebSocket.

(1) Encaminhamento de solicitação: O encaminhamento de serviço serve principalmente para carregar a solicitação de instalação de microsserviços iniciada pelo cliente para diferentes serviços.
(2) Mesclagem de resposta: Integre o trabalho que exige que várias interfaces funcionem juntas nos negócios em uma única chamada para fornecer serviços unificados para o mundo externo.
(3) Conversão de protocolo: o foco é oferecer suporte à conversão de protocolo entre SOAP, JMS e Rest
(4) Conversão de dados: o foco é oferecer suporte à conversão de formato entre XML e JSON
(5) Autenticação de segurança:

  • Controle de acesso do cliente baseado em token e política de segurança
  • Para criptografar dados e mensagens transmitidos e descriptografá-los no lado do servidor, é necessário um pacote de agente SDK independente no lado do cliente
  • Criptografia de transmissão baseada em HTTPS, suporte a certificado digital para cliente e servidor
  • Autenticação de segurança de serviço baseada em OAuth2.0 (código de autorização, cliente, modo de senha, etc.)

3. Centro de Configuração

A central de configuração atua na parametrização do sistema, e precisa atender às condições de aquisição eficiente, percepção em tempo real e acesso distribuído .

Por exemplo, o centro de configuração do Zookeeper usa o carregamento de dados na memória para obter uma aquisição eficiente e percebe a percepção em tempo real por meio do mecanismo de monitoramento do nó


4. Agendamento de eventos

O escalonamento de eventos é resolver a realização de um mecanismo de feedback rápido em um ambiente de alta simultaneidade.

O agendamento de eventos usa filas de mensagens para resolver o problema de feedback rápido. Filas de mensagens comumente usadas incluem kafka (preocupa-se apenas com alta simultaneidade, não com desempenho), activemq, rabbitmq, etc...


5. Rastreamento de serviço

O rastreamento de serviço é uma estratégia para rastrear o fluxo de solicitações entre microsserviços à medida que o número de microsserviços cresce.

Por exemplo, Spring Cloud Sleuth é um componente de rastreamento de serviço, que introduz um ID exclusivo no log para garantir a exclusividade entre chamadas de microsserviço, para que o fluxo de solicitações entre serviços possa ser rastreado.

(1) Implementar rastreamento de solicitação: Para implementar o rastreamento de solicitação, quando uma solicitação é enviada ao ponto de entrada do sistema distribuído, apenas a estrutura de rastreamento de serviço precisa criar um identificador exclusivo para ela e manter esse identificador durante o sistema distribuído fluxo até que a solicitação seja concluída, o identificador exclusivo é Trace IDque os logs do processo de solicitação podem ser associados por meio dos registros do Trace ID.

(2) Contar o tempo de atraso de cada unidade de processamento: Quando a solicitação atingir cada componente do serviço, ou quando a lógica de processamento atingir um determinado estado, registre seu início, processo específico e fim por meio de um identificador único. Esse identificador é, para cada Span IDSpan Existem dois nós, início e fim, e o tempo de atraso do intervalo pode ser calculado registrando os timestamps de início e fim do intervalo. Ele também pode armazenar outros dados, como nomes de eventos, informações de solicitação e assim por diante.


6. Fusível de serviço (Hystrix)

A fusão de serviço serve para evitar falhas em cascata de microsserviços básicos devido a uma determinada exceção de serviço, que causará falhas no sistema.Esse fenômeno é chamado de efeito de avalanche de serviço .

(1) Fusível

Quando ocorre uma avalanche de serviço, o fusível pode ser usado. O princípio do fusível é ouvir muitos erros semelhantes dentro de um período de tempo, o que forçará várias chamadas subsequentes a falharem rapidamente e não acessarem mais o servidor remoto, evitando assim o aplicativo O programa continua tentando executar operações que podem falhar, permitindo que o aplicativo continue executando sem esperar que os bugs sejam corrigidos ou desperdiçando a CPU esperando que ocorram tempos limite longos.

(2) disjuntor

Um disjuntor é uma implementação de um fusível. Quando o número de falhas de serviço excede uma certa porcentagem (metade por padrão) após uma solicitação do Comando Hystrix, o disjuntor mudará para o estado Aberto. Nesse momento, o disjuntor será interceptar todas as solicitações, permitindo que a solicitação esteja errada O status é retornado ao usuário. Após um período de tempo (o padrão é 5 segundos), ele passará automaticamente para o estado Semiaberto. Nesse momento, ele julgará o retorna o status da próxima requisição. Se a requisição for bem-sucedida, ela retornará ao estado Fechado, caso contrário, ela reabrirá o estado Aberto.


7. Gerenciamento de API

Existe uma ferramenta chamada Swagger API management tool

おすすめ

転載: blog.csdn.net/Zain_horse/article/details/132178113