No desenvolvimento de projetos na Internet, é necessário interagir com vários serviços, e os usuários obtêm dados do servidor, e a alta disponibilidade de interfaces de serviço é particularmente importante, especialmente em sistemas de comércio eletrônico e pagamento, onde a alta disponibilidade também mede se o sistema é robusto. No caso dos clusters, muitos serviços também são difíceis de manter.
Revisão do consul
Consul é uma ferramenta de código aberto desenvolvida na linguagem Go lançada pela HashiCorp, utilizada para realizar a descoberta e configuração de serviços de sistemas distribuídos, com estrutura de registro e descoberta de serviços integrada, implementação de protocolo de consistência de distribuição, verificação de saúde, armazenamento de chaves/valor e soluções multi-data center, o que é relativamente simples de usar.
Descoberta do serviço cônsul
Como usar o Consul Service Discovery:
- Execute um agente Consul no Modo Cliente em cada computador, que é responsável apenas por trocar eficientemente as informações de registro mais recentes com o Cluster Consul (não participando da eleição de líder).
- O serviço de serviço em cada computador registra o nome do serviço e a URL do serviço junto ao agente do cônsul local
- Quando um programa implantado no Computador1 precisa chamar o ServiceB, o programa ServiceA obtém diretamente o endereço de acesso do ServiçoB do Agente Cônsul local através do nome do serviço, e então faz uma solicitação diretamente para a URL do ServiçoB.
O código é o seguinte:
Na classe Startup, chame da seguinte forma:
Exame de saúde
A interface de verificação de saúde só precisa devolver um código de status 200 ao consul, e o código é o seguinte:
Comece o projeto, inscreva-se no serviço
O controlador pode definir um método de teste da seguinte forma:
Vamos ao diretório bin do projeto e iniciá-lo pela linha de comando, o código é o seguinte:
Veja o link pelo seu navegador:
http://127.0.0.1:8500/ui/dc1/services/test.itsvse
http://127.0.0.1:8500/v1/catalog/service/test.itsvse
Os dados json são os seguintes:
[ { "ID": "bb644359-6b2a-a27e-7a0a-a1950b8e515f", "Nó": "DESKTOP-EB7B69D", "Endereço": "127.0.0.1", "Centro de dados": "dc1", "EndereçosDeMarcados": { "lan": "127.0.0.1", "wan": "127.0.0.1" }, "NodeMeta": { "Segmento-Rede-Cônsul": "" }, "ServiceKind": "", "ServiceID": "507338bf-a5a6-4013-9675-c43a40a2c1a0", "ServiceName": "test.itsvse", "ServiceTags": [ "teste", "itsvse" ], "EndereçoDeServiço": "127.0.0.1", "PesosDeServiço": { "Passando": 1, "Aviso": 1 }, "ServiceMeta": {}, "Porto de Serviço": 8083, "ServiceEnableTagOverride": falso, "ServiceProoxy": { "MeshGateway": {}, "Expor": {} }, "ServiceConnect": {}, "CreateIndex": 1317, "ModifyIndex": 1317 }, { "ID": "bb644359-6b2a-a27e-7a0a-a1950b8e515f", "Nó": "DESKTOP-EB7B69D", "Endereço": "127.0.0.1", "Centro de dados": "dc1", "EndereçosDeMarcados": { "lan": "127.0.0.1", "wan": "127.0.0.1" }, "NodeMeta": { "Segmento-Rede-Cônsul": "" }, "ServiceKind": "", "ServiceID": "bb21f150-7219-4eda-bc91-54686a750228", "ServiceName": "test.itsvse", "ServiceTags": [ "teste", "itsvse" ], "EndereçoDeServiço": "127.0.0.1", "PesosDeServiço": { "Passando": 1, "Aviso": 1 }, "ServiceMeta": {}, "Porto de Serviço": 8082, "ServiceEnableTagOverride": falso, "ServiceProoxy": { "MeshGateway": {}, "Expor": {} }, "ServiceConnect": {}, "CreateIndex": 1314, "ModifyIndex": 1314 }
]
Chamada de serviço consulal
Crie um novo projeto de console .NET Core com o seguinte código:
Estou ligando aleatoriamente para o serviço registrado test.itsvse e o resultado é o seguinte:
Por fim, download do código-fonte:
Turistas, se quiserem ver o conteúdo oculto deste post, por favor Resposta |