aplicações de alto desempenho e cache distribuído com o windows server appfabric appi303 @daibert...
TRANSCRIPT
Aplicações de alto desempenho e Cache Distribuído com o Windows Server AppFabricAPPI303
@daibertSolutions Architect Hewlett-Packard Brasil
• Os dados devem ser acessados por aplicações presentes em todos os lugares: Local, Web, Federação
• Uma série de aplicações devem acessar o mesmo dado, ao mesmo tempo, porém de forma diferente
• Aplicações cada vez com mais dados
• Alta disponibilidade
• Aplicações de Missão Crítica
• Aplicações devem ser “baratas” para se escalar
Requisitos
• N camadas
• Regras de negócio e dados distribuídos, aonde os dados “moram” perto das regras
• Replicação de dados
• Criação de caches de memória pela equipe de desenvolvimento do projeto
Arquiteturas Utilizadas
Cenário Atual das Aplicações
Principais MercadosCenários
Web
• Compartilhamento de sessões HTTP através de farms de servidores• Carrinho de compras em ambiente de Farm de Servidores Web• Aplicações Online• Armazenamento de dados pré-calculados acessados com frequência
LOB• Catálogos de produtos entre empresas• Armazenar referência de dados utilizados frequentemente por aplicações
ERP
Telco• Cellular/VOIP: Computar utilização, informações de sessões ativas,
Cargas de pré-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
Financeiro• Portifólio de dados de usuários
• 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 Aplicação 01
Servidor de Aplicação 02
• Normalmente utilizando variáveis de Sessão ou Aplicação
Cache Distribuido
Visão unificada do Cache
Clientes espalhados por várias máquinas
Clientes acessam o Cache como se fossem em um
único repositório
Camada de Cache distribui
os dados através de vários nós
O que viabiliza?
• 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
Tendência de mercado
Máquinas multi-core memória
Quem deve criar a infraestrutura de cache para as aplicações?
Possíveis respostas:Desenvolvedores de aplicaçõesEmpresas 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" ?
Camada de aplicaçãoIIS apps, ASP.NET, .NET Apps,
COM+, WCF
ClientDesktop, Mobile, WPF
Web ClientAJAX, Silverlight, ASPX
Camada de dadosSQL, XML
Camada de Cache
Tipos de Dados
Dados para consulta
Dados agregados ou trasformados
Cada versão é únicaDados atualizados com frequênciaExemplos
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)
Dados de Consulta
Cenário: Redes Sociais
Dados gerados a partir de atividade transacionais nas aplicaçõesDados Históricos
ExemplosCarrinho de compras Session StateAplicações coorporativas B2B
Tipo de AcessoLeitura e gravaçãoAcesso exclusivo
EscalabilidadeMuitos dados e acessos simultâneos
FuncionalidadesAcesso baseado em chavesTransações
Dados Transacionais
Cenário: Aplicações Coorporativas
Dados Distribuídos
Dados alterados por transaçõesTransações “partidas”
Exemplos
Inventário de venda de passagens
Tipo de AcessoLeitura e gravação
Acesso compartilhado aos dados
FuncionalidadesAcesso baseado em chaves
Transações
EscalabilidadeGrande número de acessos simultâneos
Cenário: Inventário de venda de passagens
Tipos de Cache Distribuido
Cliente2Cliente1
Cache Particionado (Mais memória, sem HA)
Put (K2, V2) executado na aplicação do Cliente1Camada de roteamento envia o item V2 para o Cache2
Get (K2) executado na aplicação do Cliente2Cliente 2 roteia para o Cache 2 para pegar o item V2
Put(K2, v2) Get(K2)
Routing layer
Routing layer
Cache2Cache1
Regiões Primárias
K2, V2
Regiões Primárias
K1, V1
Cache3
Regiões Primárias
K3, V3
Cliente Velocity
Cache Local
Cliente
Cache Local
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)
Routing layer
Routing layer
Cache2Cache1
Região Primária
K2, V2
Região Primária
K1, V1
Cache3
Região Primária
K3, V3
K2, V2K2, V2
ClientClient
Cache2
Região Secundária
Cache1
Região Secundária
Cache3
Região Secundária
Região Primária
Alta Disponibilidade
Put(K2, v2)
K2, V2
K2, V2
Get(K2)
Região Primária Região Primária
K3, V3 K1, V1 K1, V1K2, V2K3, V3
K3, V3K1, V1
Routing layer
Routing layer
Put (K2, V2) on Cache1As alterçaões são replicadas do Cache2 para os demais nósCache2 aguarda o “ok” da atualização dos outros nós
Get (K2) on Cache3Cache3 verifica se os dados são iguais ao do Cache2 e, caso não seja, se atualiza
Cache2Cache1 Cache3
Regiões Replicadas
Cache Replicado (Maior performance com HA)
Put (K2, V2) on Cache1Cache2 é atualizado e notifica o Cache1 e o Cache3Cache2 replica de forma assíncrona os dados para o Cache1 e Cache2
Get on cache3O Cache 3 lê do seu repositório local os dados e retorna o valor do Item
Put(K2, v2)
K2, V2
Get(K2)
Regiões Replicadas Regiões Replicadas
K3, V3 K1, V1 K1, V1K3, V3 K3, V3K1, V1
K2, V2K2, V2
Routing layer
// ------------------------------------------------------// Get/Put por regiãocatalogo.CreateRegion(“Brinquedos");
// Ambos objetos são inseridos na mesma regiãocatalogo.Put(“Brinquedos", “Item02", new Toy( .,.));catalogo.Put(“Brinquedos", “SubItem02", new ToyParts(…));
Toy toyObj = (Toy)catalogo.Get(“Brinquedos", “Item02");
//-------------------------------------------------------// Get/Put simplescatalogo.Put(“Item01", new Toy(“Autorama", .,.));
// Recuperando um item Toy toyObj = (Toy)catalogo.Get(“Item01");
API
object data = null;var key = "DataKey";
data = cache.Get(key);
if (data == null){ data = GetData(); cache.Add(key, data);}
Cache Aside Pattern
demo
Demo
Futuro da plataforma AppFabric
Inserir o slide do BUILD sobre o AppFabric 1.1
Conteúdo RelacionadoBreakout Sessions (session codes and titles)
Interactive Sessions (session codes and titles)
Hands-on Labs (session codes and titles)
Product Demo Stations (demo station title and location)
Related Certification Exam
Find Me Later At…
Palestras RelacionadasResource 1
Resource 2
Resource 3
Resource 4
Recursos
Recursos para IT Pros
Recursos para Desenvolvedores
http://technet.microsoft.com/pt-br
http://msdn.microsoft.com/pt-br
Getthefreemobileappforyourphone
http://gettag.mobi
Getthefreemobileappforyourphone
http://gettag.mobi
Não esqueça de preencher sua
avaliação onlinewww.teched.com.br/
avaliacao
Getthefreemobileappforyourphone
http://gettag.mobi
© 2011 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.
The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after
the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.