Arquitetura de Cache. Identificando o melhor tipo de Cache para sua solução.

Olá pessoal. Este post apresentará os tipos de cache que podemos ter no “Velocity. É muito importante conhecer e entender como funcionam cada tipo de Cache para definir a melhor arquitetura de Cache para sua solução.

Cada aplicação trabalha com um tipo específico de dados. Eles podem ser dados de consulta, dados transacionais ou dados distribuídos. O tipo de dado que sua aplicação acessará afetará diretamente na arquitetura de Cache que se deve propor.

Por isso vamos conhecer um pouco sobre esses tipos de dados.

DADOS DE CONSULTA

São dados agregados ou trasformados e tem a caracteristica de cada versão do dado ser única.

Dados pouco atualizados ou atualizados com baixa frequência

EXEMPLOS:

  • Alicações Web e Coorporativas como catalogos de produtos
  • Usuários, Dados de Funcionários

TIPO DE ACESSO:

  • Maior quantidade de leitura
  • Acesso concorrente e compartilhado

ESCALABILIDADE:

  • Maior número de acessos

FUNCONALIDADE:

  • Acesso baseado em chaves
  • Buscas e filtro
  • Carregamento local (Servidor Web)

image

DADOS TRANSACIONAIS

São dados gerados a partir de atividade transacionais nas aplicações.

EXEMPLOS:

  • Carrinho de compras
  • Session State
  • Aplicações coorporativas B2B

TIPO DE ACESSO:

  • Leitura e gravação
  • Acesso exclusivo

ESCALABILIDADE:

  • Muitos dados e acessos simultâneos

FUNCAIONALIDADES:

  • Acesso baseado em chaves
  • Transações

 

image

 

DADOS DISTRIBUÍDOS

São dados existentes em mais de uma fonte de dados.

EXEMPLOS:

  • Dados alterados por transações
  • Transações “distribuídas”
  • Inventário de venda de passagens

TIPO DE ACESSO:

  • Leitura e gravação
  • Acesso compartilhado aos dados

FUNCAIONALIDADES:

  • Acesso baseado em chaves
  • Transações
  • Escalabilidade
  • Grande número de acessos simultâneos

image

Agora que já conhecemos os tipo de dados que podemos trabalhar, ver os tipos de Cache que podemos utilizar com o “Velocity”.

CACHES DISTRIBUÍDOS

Os Caches do tipo distribuídos podem ser classificados em particionados e replicado.

PARTICIONADO

  • Dados divididos por todos os nós no mesmo named cache
  • Usado para escalabilidade e disponibilidade

Exemplo:

  1. Put (K2, V2) executado na aplicação do Cliente1
  2. Camada de roteamento envia o item V2 para o Cache2
  3. Get (K2) executado na aplicação do Cliente2
  4. Cliente 2 roteia para o Cache 2 para pegar o item V2

image

REPLICADO

  • Dados replicados (copiados) para todos os nós no mesmo named cache
  • Usado para escalabilidade (Performance / Leitura)

Exemplo:

  1. Put (K2, V2) no Cache1
  2. Cache2 é atualizado e notifica o Cache1 e o Cache3
  3. Cache2 replica de forma assíncrona os dados para o Cache1 e Cache2
  4. Get(K2) no cache3
  5. O Cache 3 lê do seu repositório local os dados e retorna o valor do Item

image

CACHE LOCAL

O Cache local pode acelerar acesso aos dados no cliente pois ele mantém o Cache no processo da aplicação para dados privados utilizados com frequência e com isso a carga dos dados fica no cliente.

Exemplo utilizando Cache Particionado com Cache Local.

Put (K2, V2) executado na aplicação do Cliente1

Camada de roteamento envia o item V2 para o Cache2

Get (K2) executado na aplicação do Cliente2

Cliente 2 identifica que o dado solicitado existe no Cache Local da aplicação e busca este dado localmente, evitando a “viagem” até o nó do Cache aumentando consideravelmente a performance de leitura aos dados.

 

image

 

No próximo post vou falar sobre arquitetura de Cache em Alta Disponibilidade.

Por enquanto é só.

 

Abraços,

Daibert