appi303 daibert

Post on 14-Dec-2014

265 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

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.

top related