Confiabilidade de comunicação para conectividade de cluster
NCache fornece confiabilidade de comunicação por meio dos recursos de nova tentativa de comando e consulta de solicitação para conectividade de cluster e para garantir a comunicação e execução de quaisquer comandos que possam não ter sido executados devido a um problema de rede ou firewall.
Esses recursos dependem da regra de que certos comandos alteram o estado do cache, como operações de gravação (Adicionar/Inserir/Remover). Esses comandos são chamados de inseguro comandos e, uma vez executados, eles não poderão ser executados novamente - a menos que especificado. Por outro lado, temos comandos que podem ser executados repetidamente no cache com segurança, sem alterar o estado do cache, como operações de leitura (comandos Get). Estes são referidos como seguro comandos. O comando tenta novamente trabalhar para comandos seguros, enquanto a consulta de solicitação funciona para comandos inseguros.
Novas tentativas de comando para conectividade de cluster
As novas tentativas de comando, como o nome indica, tentam novamente a execução de um comando quando a conexão entre o cliente e o servidor de cache é interrompida, o que pode resultar de um dos seguintes cenários:
A solicitação contendo o comando estava sendo enviada quando a conexão foi interrompida e a solicitação nunca chegou ao servidor.
A solicitação contendo o comando foi enviada com sucesso ao servidor, mas há incerteza sobre se a solicitação foi atendida ou não quando a conexão foi interrompida.
Portanto, se houver certeza de que a conexão foi interrompida antes de a solicitação ser enviada ao servidor, o comando será repetido enquanto a solicitação for reenviada ao servidor.
Em caso de incerteza, o status do comando é verificado para saber se é seguro ou inseguro.
Se o comando for seguro, o comando é simplesmente repetido.
Se não for seguro, será feita uma consulta a outro nó do servidor no cluster de cache para verificar o status da solicitação. A ação é então tomada de acordo com a resposta da consulta de solicitação, que retorna o estado da solicitação ao servidor. A consulta de solicitação é explicada mais detalhadamente no capítulo.
O usuário pode configurar quantas tentativas devem ser feitas para cada comando e o intervalo de tempo entre elas em segundos.
As tentativas de comando e seu intervalo podem ser habilitados através do <ncache-server>
marcar em cliente.ncconf in %NCHOME%\config
(Windows) ou \opt\ncache\config
(Linux). Por padrão, as tentativas de comando são definidas para 3 e o intervalo para 0.1 segundos.
<ncache-server ... command-retries="3" command-retry-interval="0.1" ... />
Solicitar consulta sobre conectividade de cluster
A Consulta de Solicitação registra todas as solicitações do cliente contendo comandos inseguros no lado do servidor no nó receptor. Isso é usado para garantir uma comunicação confiável e tolerante a falhas entre o cliente e o cluster. Em caso de interrupção da conexão, um cliente pode consultar o status de um comando inseguro do cluster. O status das solicitações com falha pode ser um dos seguintes:
Resposta da consulta de solicitação | Medida tomada |
---|---|
Solicitação não recebida pelo nó do servidor. | Nova tentativa de comando. |
Solicitação recebida, mas ainda não processada. | Aguarde o processamento da solicitação e pergunte novamente. |
Solicitação processada. | Envie a resposta da solicitação concluída em resposta à consulta. |
Se a consulta de solicitação for desabilitada e um comando inseguro falhar, uma exceção será lançada solicitando que o usuário habilite o recurso, se algum comando inseguro futuro precisar se tornar confiável. Por padrão, a consulta de solicitação está desabilitada.
A consulta de solicitação é uma configuração específica do nó e pode ser habilitada por meio da propriedade a seguir no arquivo de configuração do servidor de cache localizado no seguinte local:
- . NET: Alachisoft.NCache.Service.exe.config localizado na
%NCHOME%\bin\service
. - .NET Core Windows: Alachisoft.NCache.Service.dll.config localizado na
%NCHOME%\bin\service
. - .NET Core Linux: Alachisoft.NCache.Daemon.dll.config localizado na
/opt/ncache/bin/service
. - Janelas Java: Alachisoft.NCache.Service.dll.config localizado na
%NCHOME%\bin\service
. - JavaLinux: Alachisoft.NCache.Daemon.dll.config localizado na
/opt/ncache/bin/service
.
<add key="NCacheServer.EnableRequestInquiry" value="False"/>
As solicitações contendo comandos inseguros permanecem registradas no lado do servidor até serem reconhecidas pelo cliente. O cliente pega carona no identificador da solicitação confirmada na próxima solicitação. Após a recepção da confirmação, o servidor limpa os logs de solicitação anteriores à confirmação. No entanto, podem ocorrer situações em que o log de solicitações não seja limpo. Aqui, cada log possui um tempo de expiração natural que pode ser modificado através da seguinte propriedade:
- . NET: Alachisoft.NCache.Service.exe.config localizado na
%NCHOME%\bin\service
. - .NET Core Windows: Alachisoft.NCache.Service.dll.config localizado na
%NCHOME%\bin\service
. - .NET Core Linux: Alachisoft.NCache.Daemon.dll.config localizado na
/opt/ncache/bin/service
. - Janelas Java: Alachisoft.NCache.Service.dll.config localizado na
%NCHOME%\bin\service
. - JavaLinux: Alachisoft.NCache.Daemon.dll.config localizado na
/opt/ncache/bin/service
.
<add key="NCacheServer.RequestInquiryCleanInterval" value="15"/>
Veja também
batida de coração
Vincular cluster e IP de cliente/servidor com vários NICs
Cache de inicialização automática na inicialização
Algoritmo de Nagle