2. Aplicações de alto desempenho e
Cache Distribuído com o Windows
Server AppFabric
APPI303
@daibert
Solutions Architect
Hewlett-Packard Brasil
3. 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
• Regras de negócio e dados
de forma diferente
distribuídos, 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
• Aplicações de Missão Crítica equipe de desenvolvimento do projeto
• Aplicações devem ser “baratas” para se
escalar
4. 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,
Telco Cargas de pré-pagos
• SMS: Conteúdo de mensagens / notificações / tarifações
• Comparação de preços entre companhias / Disponibilidade de passagens
Turismo
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
5. O que é cache?
Uma área de armazenamento temporária
onde os dados são armazenados para
acesso rápido
6. Cache Local
Servidor de Servidor de
Aplicação 01 Aplicação 02
• Normalmente utilizando variáveis de Sessão ou Aplicação
7. 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
8. 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
9. 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
10. 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
12. 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
13. 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
14. 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
16. 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 Routing
layer layer
Cache1 Cache2 Cache3
Regiões Primárias Regiões Primárias Regiões Primárias
K1, V1 K2, V2 K3, V3
17. 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 Routing
layer layer
Cache1 Cache2 Cache3
Região Primária Região Primária Região Primária
K1, V1 K2, V2 K3, V3
18. 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 Routing
layer 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
19. 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 Cache2 Cache3
layer
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
20. 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");
21. Cache Aside Pattern
object data = null;
var key = "DataKey";
data = cache.Get(key);
if (data == null)
{
data = GetData();
cache.Add(key, data);
}
25. Conteúdo Relacionado
Breakout 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…
27. Get the free mobile app for your phone
http:/ / gettag.mobi
http://technet.microsoft.com/pt-br
Get the free mobile app for your phone
http:/ / gettag.mobi
http://msdn.microsoft.com/pt-br
28. Não esqueça de
preencher sua avaliação
online
www.teched.com.br/avaliacao
Get the free mobile app for your phone
http:/ / gettag.mobi