Identificando e implementando cenários    para caches de dados distribuídos@daiberthttp://daibert.wordpress.com
Cenário Atual das AplicaçõesRequisitos• Os dados devem ser acessados por  aplicações presentes em todos os lugares:  Local...
Principais Mercados                                         Cenários             •   Compartilhamento de sessões HTTP atra...
O que é cache?• Uma área de armazenamento temporária  onde os dados são armazenados para acesso  rápido
Cache Local                  Servidor de             Servidor de                  Aplicação 01            Aplicação 02   •...
Cache Distribuido                                      Clientes                                  espalhados por           ...
O que viabiliza? Tendência de mercado     Máquinas multi-core                                      memória • Rápida queda ...
Quem deve criar a infraestrutura decache para as aplicações?• Possíveis respostas:  – Desenvolvedores de aplicações  – Emp...
Aonde o Cache Distribuido se “encaixa" ?              Client                               Web Client       Desktop, Mobil...
Tipos de Dados
Dados de Consulta• Dados para consulta    – Dados agregados ou trasformados• Cada versão é única• Dados atualizados com fr...
Dados Transacionais• Dados gerados a partir de atividade transacionais nas aplicações    – Dados Históricos• Exemplos    –...
Dados Distribuídos• Dados alterados por transações   – Transações “partidas”• Exemplos   – Inventário de venda de passagen...
Tipos de Cache Distribuido
Cache Particionado (Mais memória, sem HA)• Put (K2, V2) executado na aplicação do Cliente1    – Camada de roteamento envia...
Cache Particionado com Cache Local(Mais memória, maior performance, sem HA) • Cache local pode acelerar acesso aos dados n...
Alta Disponibilidade• Put (K2, V2) on Cache1    – As alterçaões são replicadas do Cache2 para os demais nós    – Cache2 ag...
Cache Replicado (Maior performance com HA)• Put (K2, V2) on Cache1    – Cache2 é atualizado e notifica o Cache1 e o Cache3...
API  //-------------------------------------------------------  // Get/Put simples  catalogo.Put(“Item01", new Toy(“Autora...
Cache Aside Pattern   object data = null;   var key = "DataKey";   data = cache.Get(key);   if (data == null)   {       da...
Principais Pordutos de Mercado                   MemCache
Perguntas          Obrigado!          @daiberthttp://daibert.wordpress.com
Upcoming SlideShare
Loading in …5
×

07 - Osvaldo Daibert - Cenários para cache de dados distribuidos

1,220 views
1,136 views

Published on

O objetivo desta apresentação é mostrar conceitos de caches distribuídos e compara-los com caches locais. Também iremos identificar cenários locais e da nuvem indicados para utilização de caches de dados distribuídos. Apresentaremos padrões de projeto de implementação de caches. E ainda: É possível criar um banco de dados sem persistência dos dados em disco? Descubra nessa sessão.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,220
On SlideShare
0
From Embeds
0
Number of Embeds
360
Actions
Shares
0
Downloads
11
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

07 - Osvaldo Daibert - Cenários para cache de dados distribuidos

  1. 1. Identificando e implementando cenários para caches de dados distribuídos@daiberthttp://daibert.wordpress.com
  2. 2. Cenário Atual das AplicaçõesRequisitos• Os dados devem ser acessados por aplicações presentes em todos os lugares: Local, Web, Federação Arquiteturas Utilizadas • N camadas• Uma série de aplicações devem acessar o mesmo dado, ao mesmo tempo, porém de • Regras de negócio e dados distribuídos, forma diferente aonde os dados “moram” perto das regras• Aplicações cada vez com mais dados • Replicação de dados• Alta disponibilidade • Criação de caches de memória pela equipe de desenvolvimento do projeto• Aplicações de Missão Crítica• Aplicações devem ser “baratas” para se escalar
  3. 3. Principais Mercados Cenários • Compartilhamento de sessões HTTP através de farms de servidores • Carrinho de compras em ambiente de Farm de Servidores WebWeb • Aplicações Online • Armazenamento de dados pré-calculados acessados com frequência • Catálogos de produtos entre empresasLOB • Armazenar referência de dados utilizados frequentemente por aplicações ERP • Cellular/VOIP: Computar utilização, informações de sessões ativas, Cargas de pré-Telco pagos • SMS: Conteúdo de mensagens / notificações / tarifaçõesTurismo • Comparação de preços entre companhias / Disponibilidade de passagens aéreasSegurança • Processamento de dados de rede e detecção de intrusão • Portifólio de dados de usuáriosFinanceiro • Simulações de carteiras de risco e cenários
  4. 4. O que é cache?• Uma área de armazenamento temporária onde os dados são armazenados para acesso rápido
  5. 5. Cache Local Servidor de Servidor de Aplicação 01 Aplicação 02 • Normalmente utilizando variáveis de Sessão ou Aplicação
  6. 6. Cache Distribuido Clientes espalhados por várias máquinas Clientes acessam o Cache como se fossem em um Visão unificada do Cache único repositório Camada de Cache distribui os dados através de vários nós
  7. 7. O que viabiliza? Tendência de mercado Máquinas multi-core memória • Rápida queda do valor das memórias, possibilitando maior poder de armazenagem de dados em memória • Facilidade de troca e melhoria de hardware com Virtualização • Multi-core CPUs, custo reduzido de memória flash
  8. 8. Quem deve criar a infraestrutura decache para as aplicações?• Possíveis respostas: – Desenvolvedores de aplicações – Empresas de software, como a Microsoft ou Oracle Os desenvolvedores devem estar focados em construir soluções para o negócio do cliente e não em ferramentas para aplicações
  9. 9. Aonde o Cache Distribuido se “encaixa" ? Client Web Client Desktop, Mobile, WPF AJAX, Silverlight, ASPX Camada de aplicação IIS apps, ASP.NET, .NET Apps, COM+, WCF Camada de dados Camada de Cache SQL, XML
  10. 10. Tipos de Dados
  11. 11. Dados de Consulta• Dados para consulta – Dados agregados ou trasformados• Cada versão é única• Dados atualizados com 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• Funcionalidade – Acesso baseado em chaves – Buscas e filtro – Carregamento local (Servidor Web) Cenário: Redes Sociais
  12. 12. Dados Transacionais• Dados gerados a partir de atividade transacionais nas aplicações – Dados Históricos• 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• Funcionalidades – Acesso baseado em chaves – Transações Cenário: Aplicações Coorporativas
  13. 13. Dados Distribuídos• Dados alterados por transações – Transações “partidas”• Exemplos – Inventário de venda de passagens• Tipo de Acesso – Leitura e gravação – Acesso compartilhado aos dados• Funcionalidades – Acesso baseado em chaves – Transações• Escalabilidade – Grande número de acessos simultâneos Cenário: Inventário de venda de passagens
  14. 14. Tipos de Cache Distribuido
  15. 15. Cache Particionado (Mais memória, sem HA)• 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 Put(K2, v2) Get(K2) Cliente1 Cliente2 Routing layer Routing layer Cache1 Cache2 Cache3 Regiões Primárias Regiões Primárias Regiões Primárias K1, V1 K2, V2 K3, V3
  16. 16. Cache Particionado com Cache Local(Mais memória, maior performance, sem HA) • Cache local pode acelerar acesso aos dados no cliente Put(K2, v2) Get(K2) Cliente Cliente Velocity Cache Local K2, V2 Cache Local K2, V2 Routing layer Routing layer Cache1 Cache2 Cache3 Região Primária Região Primária Região Primária K1, V1 K2, V2 K3, V3
  17. 17. Alta Disponibilidade• Put (K2, V2) on Cache1 – As alterçaões são replicadas do Cache2 para os demais nós – Cache2 aguarda o “ok” da atualização dos outros nós• Get (K2) on Cache3 – Cache3 verifica se os dados são iguais ao do Cache2 e, caso não seja, se atualiza Put(K2, v2) Get(K2) Client Client Routing layer Routing layer Cache1 Cache2 Cache3 Região Primária Região Primária Região Primária K1, V1 K2, V2 K3, V3 Região Secundária Região Secundária Região Secundária K3, V3 K2, V2 K3, V3 K1, V1 K2, V2 K1, V1
  18. 18. Cache Replicado (Maior performance com HA)• Put (K2, V2) on Cache1 – Cache2 é atualizado e notifica o Cache1 e o Cache3 – Cache2 replica de forma assíncrona os dados para o Cache1 e Cache2• Get on cache3 – O Cache 3 lê do seu repositório local os dados e retorna o valor do Item Put(K2, v2) Get(K2) Cache1 Routing layer Cache2 Cache3 Regiões Replicadas Regiões Replicadas Regiões Replicadas K2, V2 K2, V2 K2, V2 K3, V3 K1, V1 K3, V3 K1, V1 K3, V3 K1, V1
  19. 19. API //------------------------------------------------------- // Get/Put simples catalogo.Put(“Item01", new Toy(“Autorama", .,.)); // Recuperando um item Toy toyObj = (Toy)catalogo.Get(“Item01"); // ------------------------------------------------------ // Get/Put por região catalogo.CreateRegion(“Brinquedos"); // Ambos objetos são inseridos na mesma região catalogo.Put(“Brinquedos", “Item02", new Toy( .,.)); catalogo.Put(“Brinquedos", “SubItem02", new ToyParts(…)); Toy toyObj = (Toy)catalogo.Get(“Brinquedos", “Item02");
  20. 20. Cache Aside Pattern object data = null; var key = "DataKey"; data = cache.Get(key); if (data == null) { data = GetData(); cache.Add(key, data); }
  21. 21. Principais Pordutos de Mercado MemCache
  22. 22. Perguntas Obrigado! @daiberthttp://daibert.wordpress.com

×