NCache como NHibernate Cache de Segundo Nível

Aprenda como usar NCache como cache de segundo nível para NHibernate. NCache fornece um provedor de cache de segundo nível NHibernate que pode ser plugado por meio de alterações no web.config ou no app.config. NCache também implementou o recurso de sincronização de banco de dados para que você possa especificar quais classes devem ser sincronizadas com o banco de dados. NCache permite especificar SqlDependency ou qualquer dependência de banco de dados compatível com OLEDB para isso.

NCache é uma solução Enterprise Distributed Caching, destinada à escalabilidade e desempenho de sua aplicação. No tutorial de hoje, veremos como podemos escalar aplicativos NHibernate usando um provedor de cache de nível 2 de NCache.

Limitações com NHibernate L1 Cache

O NHibernate é uma excelente ferramenta ORM para sua aplicação e simplifica seus padrões de codificação em diferentes equipes.

Limitações com NHibernate L1 Cache
Limitações com NHibernate L1 Cache

O NHibernate fornece um cache em processo por padrão, onde você pode manter os dados temporariamente dentro de seu processo de trabalho para cada transação. Isso funciona bem para aplicativos de servidor único, mas se torna um gargalo de desempenho para aplicativos corporativos.

Em aplicativos corporativos, você geralmente tem vários servidores da Web em um cenário de balanceamento de carga e seus vários processadores de trabalho em execução em cada um deles. Portanto, isso resulta na colocação de várias consultas redundantes em seu banco de dados para os mesmos dados de cada processo de trabalho, o que torna seu aplicativo mais lento como resultado líquido e também resulta em armazenamento redundante individualmente em cada lado do processo de trabalho em sua própria memória, e você não é possível expandir quando você precisa aumentar sua base de usuários.

Modelo de provedor de cache NHibernate L2

Então, para superar essas limitações NHibernate fornece um provedor de cache de nível 2, onde você pode conectar um Cache de Segundo Nível.

  • Idealmente, o cache L2 deve ser
    • fora do processo
    • em memória
    • Cache distribuído
  • Confiável e Altamente Disponível
  • Escalável

Modelo de provedor de cache NHibernate L2

O cache de segundo nível é usado em conjunto com o cache em processo. Sempre que você obtém os dados do seu banco de dados pela primeira vez, o NHibernate automaticamente envia esses dados para o Cache de Segundo Nível, que é compartilhado por todos os processos de trabalho.

Idealmente, o cache de segundo nível deve ser um cache na memória, pois você deseja aumentar o desempenho do aplicativo. Ele precisa ser um cache fora do processo que não seja liberado mesmo que o processo de trabalho seja reciclado. Ele precisa ser distribuído, portanto, pode ser compartilhado entre vários processos de trabalho em diferentes servidores da web.

Lembre-se que você só pode aumentar sua escalabilidade e desempenho do aplicativo, se sua infraestrutura de cache subjacente for altamente escalável e orientada ao desempenho.

NCache - Provedor de cache NHibernate L2

Então, aqui temos um provedor de cache de nível 2 da NCache.

NCache - Provedor de cache NHibernate L2
NCache - Provedor de cache NHibernate L2

Esta é uma solução de cache distribuído em memória fora de processo, que tem um clustering dinâmico capacidade e abrange vários servidores. A carga de transação do seu aplicativo é distribuída igualmente, para todos os servidores de cache em tempo de execução, para obter mais desempenho e NCache mantém os dados replicados em todo o cluster para fornecer um failover consistente no caso de você perder qualquer um de seus servidores de cache.

NCache suporta os modos de replicação síncrona e assíncrona. Assim, você pode manter os dados replicados sem sobrecarga de desempenho. O desempenho de NCache cresce linearmente, quando você adiciona mais servidores à camada de cache. Não há limite para o tamanho do cache, portanto, você pode aumentar o quanto quiser no tamanho dos dados.

Você também pode incluir mais servidores em tempo de execução no cluster de cache dinamicamente, para aumentar a capacidade transacional e ter mais memória.

Ele também fornece um monitoramento de estilo de painel, que ajuda você a ver rapidamente o desempenho do cache, a atividade do aplicativo cliente no cache e os vários recursos do sistema consumidos pelo cache.

A imagem do lado direito mostra o Topologia de réplica de partição, que mantém os dados particionados e replicados em vários servidores. Partition-Replica é a topologia mais popular dentro NCache.

NCache Cache Distribuído de Nível 2 para NHibernate

Então, aqui está um diagrama de arquitetura de alto nível.

Diagrama de arquitetura de alto nível
Diagrama de arquitetura de alto nível

Quando você conecta este provedor de Nível 2 de NCache em seu aplicativo corporativo, ele não exige nenhuma alteração de código em seu aplicativo. Você só precisa ter algumas alterações de configuração em seu web.config or aplicativo.config, vamos falar sobre isso. Portanto, não há mais chamadas redundantes para seu banco de dados, se você já buscou os dados na transação anterior.

Em um web farm de balanceamento de carga como este, os dados são enviados para o cache de segundo nível automaticamente pelo NHibernate, assim que você os obtém pela primeira vez do seu banco de dados e esse cache é compartilhado por todos os servidores da web. Assim, ajuda a reduzir a carga em seu banco de dados.

NCache Recursos configuráveis ​​de cache de nível 2

Assim, com as alterações de configuração, você pode configurar vários recursos para o provedor de Cache de Segundo Nível.

  • Usar regiões NHibernate
  • Expirar objetos de cache com:
    • Deslizando ou tempo de morrer
    • Expiração absoluta
  • Sincronização de banco de dados com:
    • Dependência SQL
    • Dependência de sondagem
  • Use Sincronização. / Assíncrono. operações de cache
  • Definir a prioridade do item de cache

NCache Recursos configuráveis ​​de cache de nível 2

Por exemplo, você pode usar regiões NHibernate, você pode definir objetos de cache para expirar com uma expiração de tempo absoluto ou ocioso, você também pode configurar a dependência SQL para sincronização de banco de dados. As operações de cache síncronas e assíncronas são suportadas e você também pode configurar a prioridade do item de cache.

Então, vou guiá-lo por uma rápida sessão prática passo a passo para configurar NCache Provedor de cache de nível 2 para um aplicativo de amostra.

Eu sugeriria que você baixe a edição empresarial gratuita de 30 dias do nosso site. Este é um produto totalmente funcional e rico em recursos, mesmo nos dias de avaliação.

Amostra de Integração NHibernate em NCache

Depois de instalar NCache, veja como fica no seu sistema.

Amostra de Integração NHibernate
Amostra de Integração NHibernate

Ele instala vários exemplos do Visual Studio. Vamos para o exemplo NHibernate por exemplo, aberto no Visual Studio. Talvez seja necessário reconstruir a amostra se estiver usando o Video Studio 2010. Você também pode precisar da conversão.

Vamos dar uma olhada nas alterações de configuração que você precisa fazer para seu app.config para o provedor de cache de segundo nível de NCache.

arquivo app.config
arquivo app.config

Tudo que você precisa para definir uma seção chamada 'ncache' para o provedor de Cache como este em seu app.config e então você pode adicionar uma propriedade para o provedor de Cache como esta.

Também definimos o NCache própria seção com várias regiões. Essas regiões são as regiões do NHibernate. Cada região mapeia para um nome de Cache diferente de NCache.

Portanto, temos uma região padrão aqui, que atende a todas as entidades nas quais você não especifica nenhuma região NHibernate e temos uma região de nome específica como esta região 'Cliente'. Dentro de cada região, você pode especificar várias propriedades para cada uma das classes que se enquadram nessa região.

NHibernate Regiões
NHibernate Regiões

Por exemplo, defina a Dependência de SQL para isso, defina a prioridade dos itens de Cache, use Síncrono ou Assíncrono, defina a estratégia de expiração para tempo relativo ou ocioso.

Executando os caches

Portanto, para executar a amostra, você precisa ter alguns caches. O cache padrão e 'myPartitionReplicaCache' em execução, dentro do seu NCache Novos Negócios.

Vamos para NCache Manager, configurei isso com 'myPartitionedReplicaCache' e Cache padrão com 2 configurações de servidor agora. Vamos executar sua aplicação, visualizar a lista de clientes, por exemplo, apenas observe a solicitação/s indo para ambos os servidores enviando os dados para ele, uma vez que você os obtenha do banco de dados.

Solicitações/s igualmente respondidas
Solicitações/s igualmente respondidas

Portanto, existem cerca de 49 mais 42 itens em ambos os servidores, distribuídos igualmente para ambos e, se eu executar a consulta novamente, poderei obter esses resultados diretamente do cluster de cache de segundo nível, em vez de ir ao seu banco de dados. Então, apenas observe as Solicitações/s igualmente respondidas, de ambos os Servidores.

Teste de confiabilidade de cache

Podemos ter o teste de confiabilidade. Podemos derrubar um dos servidores de cache e você ainda verá que o cluster de cache é capaz de fornecer os itens e recuperá-los dos servidores restantes.

Para isso vamos ter que parar um dos servidores e eu vou fazer isso. Temos os 2 servidores, 21 e 22. Vou parar o 22, como se tivesse saído do cluster e depois executar novamente a consulta.

Parando o servidor de cache
Parando o servidor de cache

Você verá 49 mais 42, os 91 itens ainda estão disponíveis em um dos servidores. Eles foram recuperados do outro servidor agora e se eu executar novamente a consulta, visualizar a lista de clientes novamente, devo conseguir obter todos os itens deste servidor, do cluster. Você pode ver as solicitações/s em andamento, as buscas/s em andamento, a partir deste servidor.

Teste de confiabilidade bem-sucedido
Teste de confiabilidade bem-sucedido

Portanto, você tem o cache confiável instalado agora, não importa se um de seus servidores de cache não está disponível em tempo de execução. Os outros servidores de cache podem recuperar os dados e responder bem às suas consultas. Ao mesmo tempo, você está reduzindo a carga em seu banco de dados. Não há mais consultas redundantes indo para seu banco de dados.

Código de Integração para NHibernate em NCache

Nós fornecemos o código de integração para o NHibernate em NCache, como você pode ver no projeto que eu abri e este código fonte está disponível para você otimizar ou personalizar para suas versões específicas do NHibernate.

Código de Integração para NHibernate em NCache
Código de Integração para NHibernate em NCache

Se você for para o NCache pasta de instalação, aqui temos o código. Então, muito obrigado pelo seu tempo hoje e nós vimos hoje, como NCache pode ser útil. Quão confiável e escalável NCache é, para aumentar o desempenho do seu aplicativo NHibernate. Fique ligado para mais atualizações de NCache. Discutiremos vários recursos nos próximos tutoriais. Se você tiver alguma dúvida, envie-nos um e-mail para support@alachisoft.com

© Copyright Alachisoft 2002 - . Todos os direitos reservados. NCache é uma marca registrada da Diyatech Corp.