SlideShare une entreprise Scribd logo
1  sur  22
Télécharger pour lire hors ligne
Identificando e implementando cenários
    para caches de dados distribuídos




@daibert
http://daibert.wordpress.com
Cenário Atual das Aplicações
Requisitos
• 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
Principais Mercados
                                         Cenários
             •   Compartilhamento de sessões HTTP através de farms de servidores
             •   Carrinho de compras em ambiente de Farm de Servidores Web
Web
             •   Aplicações Online
             •   Armazenamento de dados pré-calculados acessados com frequência

             • Catálogos de produtos entre empresas
LOB
             • 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ções

Turismo      • Comparação de preços entre companhias / Disponibilidade de passagens aéreas

Segurança    • Processamento de dados de rede e detecção de intrusão

             • Portifólio de dados de usuários
Financeiro
             • Simulações de carteiras de risco e cenários
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



   • Normalmente utilizando variáveis de Sessão ou Aplicação
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
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
Quem deve criar a infraestrutura de
cache 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
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
Tipos de Dados
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
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
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
Tipos de Cache Distribuido
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
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
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
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
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");
Cache Aside Pattern

   object data = null;
   var key = "DataKey";

   data = cache.Get(key);

   if (data == null)
   {
       data = GetData();
       cache.Add(key, data);
   }
Principais Pordutos de Mercado




                   MemCache
Perguntas
          Obrigado!
          @daibert
http://daibert.wordpress.com

Contenu connexe

Tendances

Mcsa 70 410 - portugues br
Mcsa 70 410 - portugues brMcsa 70 410 - portugues br
Mcsa 70 410 - portugues brAlisson Silva
 
Maximize o Potencial do seu Datacenter com Citrix XenServer
Maximize o Potencial do seu Datacenter com Citrix XenServerMaximize o Potencial do seu Datacenter com Citrix XenServer
Maximize o Potencial do seu Datacenter com Citrix XenServerLorscheider Santiago
 
CDNs – Introdução
CDNs – IntroduçãoCDNs – Introdução
CDNs – Introduçãoelliando dias
 
2019 - GUOB MeetUp - Journey to Cloud and DBA Career
2019 - GUOB MeetUp - Journey to Cloud and DBA Career2019 - GUOB MeetUp - Journey to Cloud and DBA Career
2019 - GUOB MeetUp - Journey to Cloud and DBA CareerMarcus Vinicius Miguel Pedro
 
MySQL Alta Performance & Alta Disponibilidade
MySQL Alta Performance & Alta DisponibilidadeMySQL Alta Performance & Alta Disponibilidade
MySQL Alta Performance & Alta DisponibilidadeMySQL Brasil
 
QConSP 2014 - Cassandra no Desenvolvimento de Aplicações para serviços Móveis
QConSP 2014 - Cassandra no Desenvolvimento  de Aplicações para  serviços MóveisQConSP 2014 - Cassandra no Desenvolvimento  de Aplicações para  serviços Móveis
QConSP 2014 - Cassandra no Desenvolvimento de Aplicações para serviços MóveisEiti Kimura
 
TDC2017 | POA Trilha BigData - Utilizando o Apache Kudu como Workload Analítico
TDC2017 | POA Trilha BigData - Utilizando o Apache Kudu como Workload AnalíticoTDC2017 | POA Trilha BigData - Utilizando o Apache Kudu como Workload Analítico
TDC2017 | POA Trilha BigData - Utilizando o Apache Kudu como Workload Analíticotdc-globalcode
 
Paulo Santanna_Infnet_Migração AD
Paulo Santanna_Infnet_Migração ADPaulo Santanna_Infnet_Migração AD
Paulo Santanna_Infnet_Migração ADInvent IT Solutions
 
17h30 aws-databases-summit
17h30   aws-databases-summit17h30   aws-databases-summit
17h30 aws-databases-summitinfolive
 
Goo cloud backup e storage
Goo cloud   backup e storageGoo cloud   backup e storage
Goo cloud backup e storagegoocloud
 
Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!
Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!
Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!Matheus Espanhol
 
Portabilidade CorporeRM - 11.20
Portabilidade CorporeRM - 11.20Portabilidade CorporeRM - 11.20
Portabilidade CorporeRM - 11.20HBB Consultoria
 
MySQL do ISAM ao NoSQL
MySQL do ISAM ao NoSQLMySQL do ISAM ao NoSQL
MySQL do ISAM ao NoSQLAirton Lastori
 
MySQL + Java - Manuel Contreras
MySQL + Java - Manuel ContrerasMySQL + Java - Manuel Contreras
MySQL + Java - Manuel ContrerasMySQL Brasil
 
SP Big Data Meetup - Conhecendo Apache Cassandra @Movile
SP Big Data Meetup - Conhecendo Apache Cassandra @MovileSP Big Data Meetup - Conhecendo Apache Cassandra @Movile
SP Big Data Meetup - Conhecendo Apache Cassandra @MovileEiti Kimura
 
MySQL - o banco de dados open source mais popular do mundo
MySQL - o banco de dados open source mais popular do mundoMySQL - o banco de dados open source mais popular do mundo
MySQL - o banco de dados open source mais popular do mundoMySQL Brasil
 

Tendances (20)

Mcsa 70 410 - portugues br
Mcsa 70 410 - portugues brMcsa 70 410 - portugues br
Mcsa 70 410 - portugues br
 
Maximize o Potencial do seu Datacenter com Citrix XenServer
Maximize o Potencial do seu Datacenter com Citrix XenServerMaximize o Potencial do seu Datacenter com Citrix XenServer
Maximize o Potencial do seu Datacenter com Citrix XenServer
 
CDNs – Introdução
CDNs – IntroduçãoCDNs – Introdução
CDNs – Introdução
 
2019 - GUOB MeetUp - Journey to Cloud and DBA Career
2019 - GUOB MeetUp - Journey to Cloud and DBA Career2019 - GUOB MeetUp - Journey to Cloud and DBA Career
2019 - GUOB MeetUp - Journey to Cloud and DBA Career
 
Dhcp windows 2003
Dhcp windows 2003Dhcp windows 2003
Dhcp windows 2003
 
MySQL Alta Performance & Alta Disponibilidade
MySQL Alta Performance & Alta DisponibilidadeMySQL Alta Performance & Alta Disponibilidade
MySQL Alta Performance & Alta Disponibilidade
 
QConSP 2014 - Cassandra no Desenvolvimento de Aplicações para serviços Móveis
QConSP 2014 - Cassandra no Desenvolvimento  de Aplicações para  serviços MóveisQConSP 2014 - Cassandra no Desenvolvimento  de Aplicações para  serviços Móveis
QConSP 2014 - Cassandra no Desenvolvimento de Aplicações para serviços Móveis
 
TDC2017 | POA Trilha BigData - Utilizando o Apache Kudu como Workload Analítico
TDC2017 | POA Trilha BigData - Utilizando o Apache Kudu como Workload AnalíticoTDC2017 | POA Trilha BigData - Utilizando o Apache Kudu como Workload Analítico
TDC2017 | POA Trilha BigData - Utilizando o Apache Kudu como Workload Analítico
 
Paulo Santanna_Infnet_Migração AD
Paulo Santanna_Infnet_Migração ADPaulo Santanna_Infnet_Migração AD
Paulo Santanna_Infnet_Migração AD
 
17h30 aws-databases-summit
17h30   aws-databases-summit17h30   aws-databases-summit
17h30 aws-databases-summit
 
Goo cloud backup e storage
Goo cloud   backup e storageGoo cloud   backup e storage
Goo cloud backup e storage
 
Sql server 2019 big data cluster
Sql server 2019 big data clusterSql server 2019 big data cluster
Sql server 2019 big data cluster
 
Consolidação Mic&Mac Soluções em TI
Consolidação Mic&Mac Soluções em TIConsolidação Mic&Mac Soluções em TI
Consolidação Mic&Mac Soluções em TI
 
Bancos de Dados na AWS
Bancos de Dados na AWSBancos de Dados na AWS
Bancos de Dados na AWS
 
Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!
Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!
Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!
 
Portabilidade CorporeRM - 11.20
Portabilidade CorporeRM - 11.20Portabilidade CorporeRM - 11.20
Portabilidade CorporeRM - 11.20
 
MySQL do ISAM ao NoSQL
MySQL do ISAM ao NoSQLMySQL do ISAM ao NoSQL
MySQL do ISAM ao NoSQL
 
MySQL + Java - Manuel Contreras
MySQL + Java - Manuel ContrerasMySQL + Java - Manuel Contreras
MySQL + Java - Manuel Contreras
 
SP Big Data Meetup - Conhecendo Apache Cassandra @Movile
SP Big Data Meetup - Conhecendo Apache Cassandra @MovileSP Big Data Meetup - Conhecendo Apache Cassandra @Movile
SP Big Data Meetup - Conhecendo Apache Cassandra @Movile
 
MySQL - o banco de dados open source mais popular do mundo
MySQL - o banco de dados open source mais popular do mundoMySQL - o banco de dados open source mais popular do mundo
MySQL - o banco de dados open source mais popular do mundo
 

En vedette

Osteguneko saioa (azken aurreko saioa)
Osteguneko saioa (azken aurreko saioa)Osteguneko saioa (azken aurreko saioa)
Osteguneko saioa (azken aurreko saioa)Maitane
 
2° Bimestre_2° Avaliação (Simulado)_1° Ano_A_B_C_AM
2° Bimestre_2° Avaliação (Simulado)_1° Ano_A_B_C_AM2° Bimestre_2° Avaliação (Simulado)_1° Ano_A_B_C_AM
2° Bimestre_2° Avaliação (Simulado)_1° Ano_A_B_C_AMO mundo da FÍSICA
 
Ntics (alejandro puente1)
Ntics (alejandro puente1)Ntics (alejandro puente1)
Ntics (alejandro puente1)Alejandro
 
2° Etapa_1° Avaliação_Tipo II_3° Ano
2° Etapa_1° Avaliação_Tipo II_3° Ano2° Etapa_1° Avaliação_Tipo II_3° Ano
2° Etapa_1° Avaliação_Tipo II_3° AnoO mundo da FÍSICA
 
geografia de españa y desastres naturales 12
geografia de españa y desastres naturales 12geografia de españa y desastres naturales 12
geografia de españa y desastres naturales 1201cap2b
 
Final por fin --
Final por fin --Final por fin --
Final por fin --guille26
 
Microsoft Office Word 20071
Microsoft Office Word  20071Microsoft Office Word  20071
Microsoft Office Word 20071valeria
 
Dempeo ii oitava parte
Dempeo ii   oitava parteDempeo ii   oitava parte
Dempeo ii oitava parteBianca Martins
 
Accio Social I Ciutadania 2010
Accio Social I Ciutadania 2010Accio Social I Ciutadania 2010
Accio Social I Ciutadania 2010Mari Carmen
 
Creativiteit met de mogelijkheden van nu.
Creativiteit met de mogelijkheden van nu.Creativiteit met de mogelijkheden van nu.
Creativiteit met de mogelijkheden van nu.Henk Ligthart
 
2 revista literaria o voo da gralha azul numero 2 fevereiro 2010
2 revista literaria o voo da gralha azul numero 2 fevereiro 20102 revista literaria o voo da gralha azul numero 2 fevereiro 2010
2 revista literaria o voo da gralha azul numero 2 fevereiro 2010Confraria Paranaense
 

En vedette (20)

Osteguneko saioa (azken aurreko saioa)
Osteguneko saioa (azken aurreko saioa)Osteguneko saioa (azken aurreko saioa)
Osteguneko saioa (azken aurreko saioa)
 
2° Bimestre_2° Avaliação (Simulado)_1° Ano_A_B_C_AM
2° Bimestre_2° Avaliação (Simulado)_1° Ano_A_B_C_AM2° Bimestre_2° Avaliação (Simulado)_1° Ano_A_B_C_AM
2° Bimestre_2° Avaliação (Simulado)_1° Ano_A_B_C_AM
 
Ecuaciones
EcuacionesEcuaciones
Ecuaciones
 
Ntics (alejandro puente1)
Ntics (alejandro puente1)Ntics (alejandro puente1)
Ntics (alejandro puente1)
 
Observaciones
ObservacionesObservaciones
Observaciones
 
Documentacion En La Web Jeral
Documentacion En La Web JeralDocumentacion En La Web Jeral
Documentacion En La Web Jeral
 
Grupo Salinas
Grupo SalinasGrupo Salinas
Grupo Salinas
 
2° Etapa_1° Avaliação_Tipo II_3° Ano
2° Etapa_1° Avaliação_Tipo II_3° Ano2° Etapa_1° Avaliação_Tipo II_3° Ano
2° Etapa_1° Avaliação_Tipo II_3° Ano
 
Fase De Cierre
Fase De CierreFase De Cierre
Fase De Cierre
 
Fuglar
FuglarFuglar
Fuglar
 
Presentacion master profesorado2012
Presentacion master profesorado2012Presentacion master profesorado2012
Presentacion master profesorado2012
 
geografia de españa y desastres naturales 12
geografia de españa y desastres naturales 12geografia de españa y desastres naturales 12
geografia de españa y desastres naturales 12
 
Final por fin --
Final por fin --Final por fin --
Final por fin --
 
Spring
Spring Spring
Spring
 
Microsoft Office Word 20071
Microsoft Office Word  20071Microsoft Office Word  20071
Microsoft Office Word 20071
 
Dempeo ii oitava parte
Dempeo ii   oitava parteDempeo ii   oitava parte
Dempeo ii oitava parte
 
Shock del 90 grupo2
Shock del 90 grupo2Shock del 90 grupo2
Shock del 90 grupo2
 
Accio Social I Ciutadania 2010
Accio Social I Ciutadania 2010Accio Social I Ciutadania 2010
Accio Social I Ciutadania 2010
 
Creativiteit met de mogelijkheden van nu.
Creativiteit met de mogelijkheden van nu.Creativiteit met de mogelijkheden van nu.
Creativiteit met de mogelijkheden van nu.
 
2 revista literaria o voo da gralha azul numero 2 fevereiro 2010
2 revista literaria o voo da gralha azul numero 2 fevereiro 20102 revista literaria o voo da gralha azul numero 2 fevereiro 2010
2 revista literaria o voo da gralha azul numero 2 fevereiro 2010
 

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

Microsoft Azure Storage - Tudo o que você precisa saber sobre armazenamento d...
Microsoft Azure Storage - Tudo o que você precisa saber sobre armazenamento d...Microsoft Azure Storage - Tudo o que você precisa saber sobre armazenamento d...
Microsoft Azure Storage - Tudo o que você precisa saber sobre armazenamento d...Lucas A. Romão
 
Ws2012r2 hyper v
Ws2012r2 hyper vWs2012r2 hyper v
Ws2012r2 hyper vFabio Hara
 
Projeto InterVoIP - Arquitetura - I Workshop CPqD de Inovação Tecnológica em ...
Projeto InterVoIP - Arquitetura - I Workshop CPqD de Inovação Tecnológica em ...Projeto InterVoIP - Arquitetura - I Workshop CPqD de Inovação Tecnológica em ...
Projeto InterVoIP - Arquitetura - I Workshop CPqD de Inovação Tecnológica em ...CPqD
 
Tecnologias para mineração de dados nas nuvens
Tecnologias para mineração de dados nas nuvensTecnologias para mineração de dados nas nuvens
Tecnologias para mineração de dados nas nuvensAlessandro Binhara
 
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o AzureQCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o AzureFabrício Lopes Sanchez
 
Infinispan - Distribuição de Dados com Java
Infinispan - Distribuição de Dados com JavaInfinispan - Distribuição de Dados com Java
Infinispan - Distribuição de Dados com JavaWagner Roberto dos Santos
 
Migrando seu workload de Big Data para o Amazon EMR
Migrando seu workload de Big Data para o Amazon EMRMigrando seu workload de Big Data para o Amazon EMR
Migrando seu workload de Big Data para o Amazon EMRAmazon Web Services LATAM
 
Usando Hyper-v 2012 para virtualização do SQL Server
Usando Hyper-v 2012 para virtualização do SQL ServerUsando Hyper-v 2012 para virtualização do SQL Server
Usando Hyper-v 2012 para virtualização do SQL Serverleorsilva
 
ClusterizaçãO De AplicaçõEs Php
ClusterizaçãO De AplicaçõEs PhpClusterizaçãO De AplicaçõEs Php
ClusterizaçãO De AplicaçõEs PhpCampus Party Brasil
 
Projeto Octopus - Database Sharding para ActiveRecord
Projeto Octopus - Database Sharding para ActiveRecordProjeto Octopus - Database Sharding para ActiveRecord
Projeto Octopus - Database Sharding para ActiveRecordtchandy
 
Backup+e+archiving+na+nuvem+aws+ +ricardo+geh
Backup+e+archiving+na+nuvem+aws+ +ricardo+gehBackup+e+archiving+na+nuvem+aws+ +ricardo+geh
Backup+e+archiving+na+nuvem+aws+ +ricardo+gehAmazon Web Services LATAM
 
Conhecendo as opcoes de Storage na Nuvem da AWS
Conhecendo as opcoes de Storage na Nuvem da AWSConhecendo as opcoes de Storage na Nuvem da AWS
Conhecendo as opcoes de Storage na Nuvem da AWSAmazon Web Services LATAM
 
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVMEntregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVMRodrigo Zaccara
 
DBA became DMA for Oracle Exadata X2-2
DBA became DMA for Oracle Exadata X2-2DBA became DMA for Oracle Exadata X2-2
DBA became DMA for Oracle Exadata X2-2Rodrigo Almeida
 
Utilizando software livre para alta disponibilidade de sistemas web Java
Utilizando software livre para alta disponibilidade de sistemas web JavaUtilizando software livre para alta disponibilidade de sistemas web Java
Utilizando software livre para alta disponibilidade de sistemas web JavaAdriel Viana
 

Similaire à 07 - Osvaldo Daibert - Cenários para cache de dados distribuidos (20)

Microsoft Azure Storage - Tudo o que você precisa saber sobre armazenamento d...
Microsoft Azure Storage - Tudo o que você precisa saber sobre armazenamento d...Microsoft Azure Storage - Tudo o que você precisa saber sobre armazenamento d...
Microsoft Azure Storage - Tudo o que você precisa saber sobre armazenamento d...
 
Ws2012r2 hyper v
Ws2012r2 hyper vWs2012r2 hyper v
Ws2012r2 hyper v
 
5. rodando containers docker na aws
5. rodando containers docker na aws5. rodando containers docker na aws
5. rodando containers docker na aws
 
Projeto InterVoIP - Arquitetura - I Workshop CPqD de Inovação Tecnológica em ...
Projeto InterVoIP - Arquitetura - I Workshop CPqD de Inovação Tecnológica em ...Projeto InterVoIP - Arquitetura - I Workshop CPqD de Inovação Tecnológica em ...
Projeto InterVoIP - Arquitetura - I Workshop CPqD de Inovação Tecnológica em ...
 
Tecnologias para mineração de dados nas nuvens
Tecnologias para mineração de dados nas nuvensTecnologias para mineração de dados nas nuvens
Tecnologias para mineração de dados nas nuvens
 
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o AzureQCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
 
Infinispan - Distribuição de Dados com Java
Infinispan - Distribuição de Dados com JavaInfinispan - Distribuição de Dados com Java
Infinispan - Distribuição de Dados com Java
 
Migrando seu workload de Big Data para o Amazon EMR
Migrando seu workload de Big Data para o Amazon EMRMigrando seu workload de Big Data para o Amazon EMR
Migrando seu workload de Big Data para o Amazon EMR
 
Usando Hyper-v 2012 para virtualização do SQL Server
Usando Hyper-v 2012 para virtualização do SQL ServerUsando Hyper-v 2012 para virtualização do SQL Server
Usando Hyper-v 2012 para virtualização do SQL Server
 
ClusterizaçãO De AplicaçõEs Php
ClusterizaçãO De AplicaçõEs PhpClusterizaçãO De AplicaçõEs Php
ClusterizaçãO De AplicaçõEs Php
 
Clusterização de Aplicações PHP
Clusterização de Aplicações PHPClusterização de Aplicações PHP
Clusterização de Aplicações PHP
 
Projeto Octopus - Database Sharding para ActiveRecord
Projeto Octopus - Database Sharding para ActiveRecordProjeto Octopus - Database Sharding para ActiveRecord
Projeto Octopus - Database Sharding para ActiveRecord
 
Backup+e+archiving+na+nuvem+aws+ +ricardo+geh
Backup+e+archiving+na+nuvem+aws+ +ricardo+gehBackup+e+archiving+na+nuvem+aws+ +ricardo+geh
Backup+e+archiving+na+nuvem+aws+ +ricardo+geh
 
Conhecendo as opcoes de Storage na Nuvem da AWS
Conhecendo as opcoes de Storage na Nuvem da AWSConhecendo as opcoes de Storage na Nuvem da AWS
Conhecendo as opcoes de Storage na Nuvem da AWS
 
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVMEntregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVM
 
DBA became DMA for Oracle Exadata X2-2
DBA became DMA for Oracle Exadata X2-2DBA became DMA for Oracle Exadata X2-2
DBA became DMA for Oracle Exadata X2-2
 
Utilizando software livre para alta disponibilidade de sistemas web Java
Utilizando software livre para alta disponibilidade de sistemas web JavaUtilizando software livre para alta disponibilidade de sistemas web Java
Utilizando software livre para alta disponibilidade de sistemas web Java
 
Apresentação
ApresentaçãoApresentação
Apresentação
 
2012 - Veris - DBA Career and Oracle Database
2012 - Veris - DBA Career and Oracle Database2012 - Veris - DBA Career and Oracle Database
2012 - Veris - DBA Career and Oracle Database
 
Docker.io:
Docker.io: Docker.io:
Docker.io:
 

Plus de DNAD

LT 03 - Juan Lopes - Complexidade algoritmos
LT 03 - Juan Lopes - Complexidade algoritmosLT 03 - Juan Lopes - Complexidade algoritmos
LT 03 - Juan Lopes - Complexidade algoritmosDNAD
 
LT 05 - Ismael Apolinário - Importancia participacao cliente
LT 05 - Ismael Apolinário - Importancia participacao clienteLT 05 - Ismael Apolinário - Importancia participacao cliente
LT 05 - Ismael Apolinário - Importancia participacao clienteDNAD
 
LT 09 - Victor Cavalcante - Arquitetura não é só server side
LT 09 - Victor Cavalcante - Arquitetura não é só server sideLT 09 - Victor Cavalcante - Arquitetura não é só server side
LT 09 - Victor Cavalcante - Arquitetura não é só server sideDNAD
 
LT 08 - Guilherme Silveira - Cache hipermidia
LT 08 - Guilherme Silveira - Cache hipermidiaLT 08 - Guilherme Silveira - Cache hipermidia
LT 08 - Guilherme Silveira - Cache hipermidiaDNAD
 
LT 07 - Glauber de Almeida - DRY
LT 07 - Glauber de Almeida - DRYLT 07 - Glauber de Almeida - DRY
LT 07 - Glauber de Almeida - DRYDNAD
 
LT 06 - Douglas Aguiar - Quem nao se comunica se trumbica
LT 06 - Douglas Aguiar - Quem nao se comunica se trumbicaLT 06 - Douglas Aguiar - Quem nao se comunica se trumbica
LT 06 - Douglas Aguiar - Quem nao se comunica se trumbicaDNAD
 
LT 02 - Rodrigo Kumpera - Rodando c sharp
LT 02 - Rodrigo Kumpera - Rodando c sharpLT 02 - Rodrigo Kumpera - Rodando c sharp
LT 02 - Rodrigo Kumpera - Rodando c sharpDNAD
 
LT 01 - Rodrigo Yoshima - Business vsarchitecture
LT 01 - Rodrigo Yoshima - Business vsarchitectureLT 01 - Rodrigo Yoshima - Business vsarchitecture
LT 01 - Rodrigo Yoshima - Business vsarchitectureDNAD
 
LT 04 - Denis Ferrari - Como lidar com as dificuldades da primeira sprint - dnad
LT 04 - Denis Ferrari - Como lidar com as dificuldades da primeira sprint - dnadLT 04 - Denis Ferrari - Como lidar com as dificuldades da primeira sprint - dnad
LT 04 - Denis Ferrari - Como lidar com as dificuldades da primeira sprint - dnadDNAD
 
02a - Leandro Daniel - Examinando a arquitetura evolucionária
02a -  Leandro Daniel - Examinando a arquitetura evolucionária02a -  Leandro Daniel - Examinando a arquitetura evolucionária
02a - Leandro Daniel - Examinando a arquitetura evolucionáriaDNAD
 
09 - Fábio Akita - Além do rails
09 - Fábio Akita - Além do rails09 - Fábio Akita - Além do rails
09 - Fábio Akita - Além do railsDNAD
 
08 - Otavio Pecego - Arquitetura e nuvem: o que muda?
08 - Otavio Pecego - Arquitetura e nuvem: o que muda?08 - Otavio Pecego - Arquitetura e nuvem: o que muda?
08 - Otavio Pecego - Arquitetura e nuvem: o que muda?DNAD
 
06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD
06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD
06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDDDNAD
 
05 - Waldemir Cambiucci - Matriz de habilidades de um arquiteto TI
05 - Waldemir Cambiucci - Matriz de habilidades de um arquiteto TI05 - Waldemir Cambiucci - Matriz de habilidades de um arquiteto TI
05 - Waldemir Cambiucci - Matriz de habilidades de um arquiteto TIDNAD
 
02c - Vinicius Quaiato - Over Patternization, YAGNI, KISS
02c - Vinicius Quaiato - Over Patternization, YAGNI, KISS02c - Vinicius Quaiato - Over Patternization, YAGNI, KISS
02c - Vinicius Quaiato - Over Patternization, YAGNI, KISSDNAD
 
02b - Elemar Jr. - Examinando a Arquitetura Evolucionária
02b  - Elemar Jr. - Examinando a Arquitetura Evolucionária02b  - Elemar Jr. - Examinando a Arquitetura Evolucionária
02b - Elemar Jr. - Examinando a Arquitetura EvolucionáriaDNAD
 
04 - Felipe Oliveira - Think Decoupled! (SOA)
04 - Felipe Oliveira - Think Decoupled! (SOA)04 - Felipe Oliveira - Think Decoupled! (SOA)
04 - Felipe Oliveira - Think Decoupled! (SOA)DNAD
 
01 - Giovanni Bassi - Keynote
01 - Giovanni Bassi - Keynote01 - Giovanni Bassi - Keynote
01 - Giovanni Bassi - KeynoteDNAD
 

Plus de DNAD (18)

LT 03 - Juan Lopes - Complexidade algoritmos
LT 03 - Juan Lopes - Complexidade algoritmosLT 03 - Juan Lopes - Complexidade algoritmos
LT 03 - Juan Lopes - Complexidade algoritmos
 
LT 05 - Ismael Apolinário - Importancia participacao cliente
LT 05 - Ismael Apolinário - Importancia participacao clienteLT 05 - Ismael Apolinário - Importancia participacao cliente
LT 05 - Ismael Apolinário - Importancia participacao cliente
 
LT 09 - Victor Cavalcante - Arquitetura não é só server side
LT 09 - Victor Cavalcante - Arquitetura não é só server sideLT 09 - Victor Cavalcante - Arquitetura não é só server side
LT 09 - Victor Cavalcante - Arquitetura não é só server side
 
LT 08 - Guilherme Silveira - Cache hipermidia
LT 08 - Guilherme Silveira - Cache hipermidiaLT 08 - Guilherme Silveira - Cache hipermidia
LT 08 - Guilherme Silveira - Cache hipermidia
 
LT 07 - Glauber de Almeida - DRY
LT 07 - Glauber de Almeida - DRYLT 07 - Glauber de Almeida - DRY
LT 07 - Glauber de Almeida - DRY
 
LT 06 - Douglas Aguiar - Quem nao se comunica se trumbica
LT 06 - Douglas Aguiar - Quem nao se comunica se trumbicaLT 06 - Douglas Aguiar - Quem nao se comunica se trumbica
LT 06 - Douglas Aguiar - Quem nao se comunica se trumbica
 
LT 02 - Rodrigo Kumpera - Rodando c sharp
LT 02 - Rodrigo Kumpera - Rodando c sharpLT 02 - Rodrigo Kumpera - Rodando c sharp
LT 02 - Rodrigo Kumpera - Rodando c sharp
 
LT 01 - Rodrigo Yoshima - Business vsarchitecture
LT 01 - Rodrigo Yoshima - Business vsarchitectureLT 01 - Rodrigo Yoshima - Business vsarchitecture
LT 01 - Rodrigo Yoshima - Business vsarchitecture
 
LT 04 - Denis Ferrari - Como lidar com as dificuldades da primeira sprint - dnad
LT 04 - Denis Ferrari - Como lidar com as dificuldades da primeira sprint - dnadLT 04 - Denis Ferrari - Como lidar com as dificuldades da primeira sprint - dnad
LT 04 - Denis Ferrari - Como lidar com as dificuldades da primeira sprint - dnad
 
02a - Leandro Daniel - Examinando a arquitetura evolucionária
02a -  Leandro Daniel - Examinando a arquitetura evolucionária02a -  Leandro Daniel - Examinando a arquitetura evolucionária
02a - Leandro Daniel - Examinando a arquitetura evolucionária
 
09 - Fábio Akita - Além do rails
09 - Fábio Akita - Além do rails09 - Fábio Akita - Além do rails
09 - Fábio Akita - Além do rails
 
08 - Otavio Pecego - Arquitetura e nuvem: o que muda?
08 - Otavio Pecego - Arquitetura e nuvem: o que muda?08 - Otavio Pecego - Arquitetura e nuvem: o que muda?
08 - Otavio Pecego - Arquitetura e nuvem: o que muda?
 
06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD
06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD
06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD
 
05 - Waldemir Cambiucci - Matriz de habilidades de um arquiteto TI
05 - Waldemir Cambiucci - Matriz de habilidades de um arquiteto TI05 - Waldemir Cambiucci - Matriz de habilidades de um arquiteto TI
05 - Waldemir Cambiucci - Matriz de habilidades de um arquiteto TI
 
02c - Vinicius Quaiato - Over Patternization, YAGNI, KISS
02c - Vinicius Quaiato - Over Patternization, YAGNI, KISS02c - Vinicius Quaiato - Over Patternization, YAGNI, KISS
02c - Vinicius Quaiato - Over Patternization, YAGNI, KISS
 
02b - Elemar Jr. - Examinando a Arquitetura Evolucionária
02b  - Elemar Jr. - Examinando a Arquitetura Evolucionária02b  - Elemar Jr. - Examinando a Arquitetura Evolucionária
02b - Elemar Jr. - Examinando a Arquitetura Evolucionária
 
04 - Felipe Oliveira - Think Decoupled! (SOA)
04 - Felipe Oliveira - Think Decoupled! (SOA)04 - Felipe Oliveira - Think Decoupled! (SOA)
04 - Felipe Oliveira - Think Decoupled! (SOA)
 
01 - Giovanni Bassi - Keynote
01 - Giovanni Bassi - Keynote01 - Giovanni Bassi - Keynote
01 - Giovanni Bassi - Keynote
 

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

  • 1. Identificando e implementando cenários para caches de dados distribuídos @daibert http://daibert.wordpress.com
  • 2. Cenário Atual das Aplicações Requisitos • 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. Principais Mercados Cenários • Compartilhamento de sessões HTTP através de farms de servidores • Carrinho de compras em ambiente de Farm de Servidores Web Web • Aplicações Online • Armazenamento de dados pré-calculados acessados com frequência • Catálogos de produtos entre empresas LOB • 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ções Turismo • Comparação de preços entre companhias / Disponibilidade de passagens aéreas Segurança • Processamento de dados de rede e detecção de intrusão • Portifólio de dados de usuários Financeiro • Simulações de carteiras de risco e cenários
  • 4. O que é cache? • Uma área de armazenamento temporária onde os dados são armazenados para acesso rápido
  • 5. Cache Local Servidor de Servidor de Aplicação 01 Aplicação 02 • Normalmente utilizando variáveis de Sessão ou Aplicação
  • 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. 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. Quem deve criar a infraestrutura de cache 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. 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
  • 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. 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. 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. Tipos de Cache Distribuido
  • 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. 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. 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. 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. 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. Cache Aside Pattern object data = null; var key = "DataKey"; data = cache.Get(key); if (data == null) { data = GetData(); cache.Add(key, data); }
  • 21. Principais Pordutos de Mercado MemCache
  • 22. Perguntas Obrigado! @daibert http://daibert.wordpress.com