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)
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
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
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:
- 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 roteia para o Cache 2 para pegar o item V2
REPLICADO
- Dados replicados (copiados) para todos os nós no mesmo named cache
- Usado para escalabilidade (Performance / Leitura)
Exemplo:
- Put (K2, V2) no Cache1
- Cache2 é atualizado e notifica o Cache1 e o Cache3
- Cache2 replica de forma assíncrona os dados para o Cache1 e Cache2
- Get(K2) no cache3
- O Cache 3 lê do seu repositório local os dados e retorna o valor do Item
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.
No próximo post vou falar sobre arquitetura de Cache em Alta Disponibilidade.
Por enquanto é só.
Abraços,
Daibert