Formação
Módulo
Introdução a Orleães - Training
Saiba o que é a arquitetura orleans, os benefícios que pode proporcionar e como integrá-la com as suas aplicações.
Este browser já não é suportado.
Atualize para o Microsoft Edge para tirar partido das mais recentes funcionalidades, atualizações de segurança e de suporte técnico.
Consul é uma plataforma de descoberta de serviços distribuída, altamente disponível e com reconhecimento de data center que inclui registro de serviço simples, verificação de integridade, deteção de falhas e armazenamento de chave-valor. Isto é construído com base na premissa de que cada nó no datacenter está a executar um agente Consul que atua como servidor ou cliente. Cada agente se comunica através de um protocolo de fofoca escalável.
Há uma visão geral detalhada do Consul, incluindo comparações com soluções semelhantes aqui.
Consul está escrito em Go e é de código aberto; downloads compilados estão disponíveis para macOS X, FreeBSD, Linux, Solaris e Windows.
Como Provedor de Associação Orleans, a Consul é uma boa escolha quando necessitar fornecer uma solução no local que não exija que os seus clientes potenciais tenham infraestrutura existente e um fornecedor de TI cooperativo. O Consul é um executável único leve, não tem dependências e, como tal, pode ser facilmente incorporado na sua solução de middleware. Quando o Consul é a sua solução para descobrir, verificar e manter os seus microsserviços, faz sentido integrar-se totalmente com a Orleans associação para simplicidade e facilidade de operação. Também existe uma tabela de adesão no Consul (também conhecida como "Orleans Custom System Store"), que se integra totalmente com a Gestão de Clusters Orleans.
Há uma extensa documentação disponível sobre Consul.io sobre a criação de um cluster estável do Consul, e não faz sentido repetir isso aqui. No entanto, para sua conveniência, incluímos este guia para que você possa rapidamente começar Orleans funcionando com um agente Consul independente.
Crie uma pasta para instalar o Consul (por exemplo, C:\Consul).
Crie uma subpasta: C:\Consul\Data (o Consul não cria este diretório se ele não existir).
Baixe e descompacte Consul.exe no C:\Consul.
Abra um prompt de comando em C:\Consul e execute o seguinte comando:
./consul.exe agent -server -bootstrap -data-dir "C:\Consul\Data" -client='0.0.0.0'
No comando anterior:
agent
: Instrui o Cônsul a executar o processo de agente que hospeda os serviços. Sem essa opção, o processo Consul tenta usar RPC para configurar um agente em execução.-server
: Define o agente como um servidor e não como um cliente (Um cliente Consul é um agente que hospeda todos os serviços e dados, mas não tem direitos de voto para decidir, e não pode se tornar, o líder do cluster.-bootstrap
: O primeiro (e apenas o primeiro!) nó em um cluster deve ser inicializado para que ele assuma a liderança do cluster.-data-dir [path]
: Especifica o caminho onde todos os dados do Consul são armazenados, incluindo a tabela de associação do cluster.-client='0.0.0.0'
: Informa o Consul sobre em que IP abrir o serviço.Há muitos outros parâmetros e a opção de usar um arquivo de configuração JSON. Para obter uma lista completa das opções, consulte a documentação do Consul.
Verifique se o Consul está em execução e pronto para aceitar solicitações de associação do Orleans abrindo o ponto de extremidade de serviços em seu navegador em http://localhost:8500/v1/catalog/services
. Quando funciona corretamente, o navegador exibe o seguinte JSON:
{
"consul": []
}
Para configurar Orleans para usar o Consul como um provedor de associação, seu projeto de silo precisará fazer referência ao Microsoft.Orleans. Clustering.Consul pacote NuGet. Depois de fazer isso, você pode configurar o provedor de associação no arquivo de Program.cs do seu silo da seguinte maneira:
IHostBuilder builder = Host.CreateDefaultBuilder(args)
.UseOrleans(silo =>
{
silo.UseConsulSiloClustering(options =>
{
// The address of the Consul server
var address = new Uri("http://localhost:8500");
options.ConfigureConsulClient(address);
});
})
.UseConsoleLifetime();
using IHost host = builder.Build();
host.Run();
O código anterior:
address
.Para configurar o cliente, faça referência ao mesmo pacote NuGet e chame o método de extensão UseConsulClientClustering.
Se você estiver interessado em usar o Consul para sua descoberta de serviços, há SDKs de cliente para os idiomas mais populares.
O Provedor de Tabela de Membros faz uso da funcionalidade de armazenamento de chaves/valores do Consul com operações deAnd-Set de verificação (CAS). Quando cada Silo começa, regista duas entradas de chave-valor, uma que contém os detalhes do Silo e outra que contém a última vez em que o Silo confirmou estar ativo. Este último refere-se a entradas de diagnóstico "Estou vivo" e não a batimentos cardíacos de deteção de falha, que são enviados diretamente entre os silos e não são escritos na tabela. Todas as operações de gravação na tabela são realizadas com CAS para fornecer controle de simultaneidade, conforme exigido pelo Cluster Management Protocol do Orleans.
Quando o Silo estiver em execução, você poderá visualizar essas entradas no seu navegador da Web em http://localhost:8500/v1/kv/?keys&pretty
, que exibe algo como:
[
"orleans/default/192.168.1.11:11111@43165319",
"orleans/default/192.168.1.11:11111@43165319/iamalive",
"orleans/default/version"
]
Todas as chaves são prefixadas com orleans
, que é codificado no provedor e destina-se a evitar a colisão do espaço de chaves com outros usuários do Consul. Você pode usar qualquer uma dessas chaves para recuperar informações adicionais sobre Cada uma dessas chaves pode ser lida anexando seu nome de chave (sem aspas) à raiz KV do Consul em http://localhost:8500/v1/kv/
. Ao fazê-lo, terá o seguinte JSON:
[
{
"LockIndex": 0,
"Key": "orleans/default/192.168.1.11:11111@43165319",
"Flags": 0,
"Value": "[BASE64 UTF8 Encoded String]",
"CreateIndex": 321,
"ModifyIndex": 322
}
]
A decodificação da cadeia de caracteres codificada Base64 UTF-8 Value
fornece os dados reais da associação Orleans:
http://localhost:8500/v1/KV/orleans/default/[SiloAddress]
{
"Hostname": "[YOUR_MACHINE_NAME]",
"ProxyPort": 30000,
"StartTime": "2023-05-15T14:22:00.004977Z",
"Status": 3,
"SiloName": "Silo_fcad0",
"SuspectingSilos": []
}
http://localhost:8500/v1/KV/orleans/default/[SiloAddress]/IAmAlive
"2023-05-15T14:27:01.1832828Z"
Quando os clientes se conectam, eles leem os KVs de todos os silos no cluster em um HTTP GET usando o URI http://192.168.1.26:8500/v1/KV/orleans/default/?recurse
.
Existem algumas limitações a ter em conta ao utilizar o Consul como fornecedor de membros.
Atualmente, o Consul KV não suporta atualizações atômicas. Portanto, o Orleans Consul Membership Provider implementa apenas o Orleans protocolo de associação básico, conforme descrito em gerenciamento de cluster no Orleanse não suporta o protocolo de associação estendida. Este protocolo estendido foi introduzido como uma base para funcionalidades que ainda não foram implementadas, além de servir como uma validação extra, mas não essencial, de conectividade de silo.
Atualmente, os pares chave-valor no Consul não são replicados entre os data centers do Consul. Há um projeto separado para lidar com esse esforço de replicação, mas ainda não foi comprovado que ele ofereça suporte a Orleans.
Quando o Consul é iniciado no Windows, ele registra a seguinte mensagem:
==> WARNING: Windows is not recommended as a Consul server. Do not use in production.
Esta mensagem de aviso é exibida devido à falta de foco no teste ao executar em um ambiente Windows e não devido a quaisquer problemas conhecidos reais. Leia a discussão dos antes de decidir se o Consul é a escolha certa para si.
Comentários do .NET
O .NET é um projeto código aberto. Selecione um link para fornecer comentários:
Formação
Módulo
Introdução a Orleães - Training
Saiba o que é a arquitetura orleans, os benefícios que pode proporcionar e como integrá-la com as suas aplicações.