Cliente de cache distribuído
O uso de NCache abrange uma variedade de casos de uso, desde um simples armazenamento de valor-chave até avançado Pesquisa SQL e Pub / Sub. Os aplicativos cliente incluem, entre outros, aplicativos de console, serviços do Windows, aplicativos da Web e serviços da Web. As bibliotecas de cliente (SDK) incluem .NET, Java e NodeJS. Além disso, também é fornecido suporte para Python e Scala. Usando o SDK relevante, os aplicativos cliente podem se conectar a um ou mais caches.
Note
Este recurso também está disponível em NCache Professional.
Métodos de comunicação para cliente de cache distribuído
Google Protobuf como formato de troca de dados: O cliente se comunica com o cache distribuído por meio de um soquete TCP persistente. NCache cliente usa Buffer de protocolo do Google (Protobuf) como protocolo para comunicação com o servidor de cache. O uso do Protobuf fornece flexibilidade para versões de clientes mais antigas do NCache, para se comunicar com novas versões do servidor de cache.
Execução de solicitação paralela baseada em solicitação-resposta: NCache cliente suporta multi-threading. Esses aplicativos podem fazer solicitações paralelas ao cache. NCache segue o protocolo de solicitação-resposta baseado em RequestId nas comunicações cliente-servidor, onde cada solicitação recebe um RequestId exclusivo. Apesar de ter uma única conexão TCP entre o cliente de cache e um servidor de cache, o cliente pode enviar múltiplas solicitações com seus RequestIds exclusivos para o servidor de cache sem esperar pela resposta das solicitações já enviadas. Portanto, cada solicitação é verdadeiramente independente. NCache O servidor também oferece suporte à execução paralela de solicitações. Essa arquitetura permite que os aplicativos executem múltiplas operações paralelas do cliente para os servidores de cache, sem que as operações esperem umas pelas outras, proporcionando assim máximo desempenho e escalabilidade.
Solicitar Pipeline: Pipelining refere-se à combinação e envio de múltiplas solicitações em uma única operação de soquete (E/S). Sempre que os aplicativos executam operações de E/S, ocorre a comutação do modo usuário para kernel, o que é uma operação cara. Pipelining evita esse custo executando a mesma tarefa em um número reduzido de operações de E/S. Pipelining aumenta muitas vezes o desempenho do aplicativo. NCache suporta pipeline no cliente e no servidor.
Reconhecimento de topologia de cache: NCache o cliente reconhece a topologia do cache. Quando um cliente de cache se conecta ao primeiro servidor de cache, ele recupera os metadados do cache, incluindo sua topologia. Como um cliente deve estabelecer conectividade com servidores de cache e como as operações do cliente devem ser executadas depende da topologia subjacente do cache. Por exemplo, os dados são distribuídos entre diferentes servidores de cache em Particionado e Réplica de partição topologias. Portanto, o cliente estabelece uma conexão TCP com cada servidor no cluster de cache e busca os mapas de distribuição de dados mais recentes. O cliente executa diretamente operações de leitura e gravação na partição que contém os dados em questão. Da mesma forma, cada servidor no Replicado topologia contém o mesmo conjunto de dados. Assim, o cliente se conecta apenas a um único servidor de cache.
Lidando com falhas de conexão de maneira perfeita: A NCache cliente mantém uma conexão persistente com o(s) servidor(es) de cache. Se esta conexão for interrompida devido a falhas de rede, o NCache o cliente está equipado com um mecanismo de restabelecimento da conexão em segundo plano. Este mecanismo estabelece automaticamente a conectividade com o servidor com falha, assim que a conectividade de rede é retomada entre o cliente e o servidor. E tudo isso acontece de forma integrada, sem intervenção do aplicativo cliente.
Serialização de dados: Os dados do aplicativo passam pelo processo de serialização antes de irem para o servidor de cache. NCache suporta ambos Serialização binária e JSON. Você pode escolher qualquer um dos formatos de serialização no momento de configurar o cache. O cliente de cache busca o formato de serialização do servidor de cache ao conectar-se ao cache. Em seguida, serializa os dados do aplicativo de acordo com o formato de serialização.
Criptografia de dados: A criptografia de dados do aplicativo é um recurso opcional que você pode ativar. Se criptografia estiver configurado, o cliente criptografa os dados do aplicativo após a serialização. O cliente busca a configuração relacionada à criptografia do servidor de cache ao se conectar ao cache.
Compressão de dados: Compressão dos dados do aplicativo pode ajudar a reduzir o tamanho do cache se os dados forem muito grandes. Os dados são primeiro serializados, depois criptografados (se a criptografia estiver habilitada) e finalmente compactados pelo cliente de cache antes de serem despachados para o cache. O cliente de cache busca a configuração relacionada à compactação do servidor de cache ao se conectar ao cache.
Conectando com o cache
O cliente de cache precisa das informações do servidor para se conectar ao cache. As informações do servidor podem ser fornecidas através do arquivo de configuração do cliente (cliente.ncconf ) ou através CacheConnectionOptions. O cliente itera pela lista de servidores de cache fornecida e tenta se conectar ao cache em execução no servidor. Se a instância de cache não estiver em execução em um determinado servidor, ela será movida para o próximo servidor fornecido na lista. A conexão do cliente geralmente passa pelas seguintes etapas:
O cliente primeiro estabelece uma conexão TCP com NCache serviço acabado porta 9800.
O cliente então faz uma solicitação para a lista completa de servidores de cache configurados. Desta forma, tem uma lista atualizada dos servidores de cache.
O cliente então envia ao cache uma solicitação de inicialização ao servidor, que inclui o nome do cache e as credenciais de segurança caso a segurança do cache está habilitada. Cada cache é executado em um processo separado. Se você tem .NET Framework instalação baseada em NCache na extremidade do servidor, o serviço transfere perfeitamente a conexão do cliente para o processo de cache e o cliente se conecta com sucesso ao cache. Dentro .NET Core ou .NET 6 e instalações superiores, o serviço compartilha as informações da porta com o cliente no qual o cache está escutando conexões. O cliente então estabelece uma conexão direta com o processo de cache e envia uma solicitação de inicialização.
Note
NCache configura automaticamente o Firewall para abrir todas as portas necessárias no Windows. No entanto, você precisa abrir NCache portas no Linux por Configurando Firewall.
Se o cliente estiver se conectando a um Cache replicado e o balanceamento de carga do cliente estiver habilitado, o cliente solicitará um servidor que tenha o menor número de clientes conectados a ele. Em seguida, ele se conecta ao servidor menos carregado.
Se o cliente estiver se conectando a um Particionado ou um Réplica de partição cache, então ele solicita os mapas de distribuição para os servidores. Ao receber o(s) mapa(s), estabelece conexões com os servidores de cache presentes no mapa de distribuição.
O cliente também solicita diferentes configurações de cache, como
- Limite de compactação e formato de serialização de cache
- chaves de criptografia são compartilhados entre o cliente e o servidor de cache
- Índices de consulta configurados e tipos compactos registrados, etc.
Veja também
Topologias de cache
Cluster de cache
Cache Local
Cache de cliente
Ponte para replicação WAN