© 2009 VMware Inc. All rights reserved
GemFire Enterprise Data Fabric Alta Disponibilidade de dados com extrema performance e confiabilidade
Frederico [email protected] Application Platform Specialist LATAMOutubro 2011
quinta-feira, 27 de outubro de 11
27
Alta disponibilidade no banco de dados
provida por Storage
compartlilhado
Aumento na demanda de acesso
a dados (leitura e escrita)
Aumento no número de requisições ao cluster
de banco de dados
Típico deployment para aplicações corporativas em ambiente HAAumento expressivo no
número de nós na camada de aplicação exige que a camada de acesso a dados escale na mesma proporção.
As limitações dos RDBMSs tradicionais...
quinta-feira, 27 de outubro de 11
Add/remove web servers
Web Tier
Application Tier
Database Tier
Storage Tier
Load Balancer
Add/remove application servers
Stateless
Stateful
Add/reconfigure storage
Move to bigger machine
Escalando com infra-estrutura elástica
quinta-feira, 27 de outubro de 11
Web Tier
Application Tier
Database Tier
Storage Tier
Load Balancer
Add/remove web servers
Add/remove application servers
Stateless
Stateful
Add/reconfigure storage
Move to bigger machine
Escalando com infra-estrutura elástica
quinta-feira, 27 de outubro de 11
Web Tier
Application Tier
Database Tier
Storage Tier
Load Balancer
Stateless
Stateful
Add/reconfigure storage
Move to bigger machine
Escalando com infra-estrutura elástica
quinta-feira, 27 de outubro de 11
Add/remove web/application servers
Web Tier
Application Tier
Database Tier
Storage Tier
Load Balancer
Add/reconfigure storage
Move to bigger machine
As camadas Web de de Aplicação podem ser facilmente separadas e consolidadas. Servidores podem ser adicionados ou removidos segundo demanda - on the fly.
A base de dados somente “cresce” movendo a máquina (física ou virtual) para um servidor com maior capacidade
Os discos podem ser virtualizados e crescer sobre demanda
Como escalar horizontalmente de
forma linear???
Escalando com infra-estrutura elástica
quinta-feira, 27 de outubro de 11
6
Porém...
... I/O se torna o gargalo
quinta-feira, 27 de outubro de 11
77
Alterações de dados demandam
necessariamente acesso síncrono ao
armazenamento rígido e locking distribuído
~ 3.000.000 x mais lento!!!
Porém...
... I/O se torna o gargalo
Bancos de Dados podem até fazer caching de dados
para leitura, mas...
quinta-feira, 27 de outubro de 11
8
Site principal Site backup
replicação de storage
Replicação entre data centers
Geo-replicação
Replicação de banco (Data Guard)
quinta-feira, 27 de outubro de 11
9
Sua aplicação está preparada para ambiente Cloud?
The big glaring hole [with cloud] is data handling.
-Adrian Kunzle, MDHead of Engineering & Architecture, JPMorgan Chase
“ ”
File Systems Databases Other Systems
quinta-feira, 27 de outubro de 11
Web Tier
Application Tier
Database Tier
Storage Tier
Load Balancer
Virtualizando também dados
quinta-feira, 27 de outubro de 11
Web Tier
Application Tier
Database Tier
Storage Tier
Load Balancer
Virtualizando também dados
quinta-feira, 27 de outubro de 11
Web Tier
Application Tier
Database Tier
Storage Tier
Load Balancer
Virtualizando também dados
quinta-feira, 27 de outubro de 11
Web Tier
Application Tier
Load Balancer
Database Tier
Storage Tier
Movendo dados para o Data Fabric
quinta-feira, 27 de outubro de 11
Web Tier
Application Tier
Load Balancer
Storage Tier
Movendo dados para o Data Fabric
quinta-feira, 27 de outubro de 11
Web Tier
Application Tier
Load Balancer Add/remove web/application/data servers
Add/remove storage
Storage Tier
Disks may be direct or network attached
Movendo dados para o Data Fabric
quinta-feira, 27 de outubro de 11
Web Tier
Application Tier
Load Balancer Add/remove web/application/data servers
Add/remove storage
Storage Tier
Disks may be direct or network attached
Optional reliable, asynchronous feed to Data Warehouse or Archival
Database
Movendo dados para o Data Fabric
quinta-feira, 27 de outubro de 11
In-Memory Distributed Fabric
DataDataData
Particionamento, distribuição e replicação
de dados em memória
Dados em memoria podem ser assincronamente persistidos /
lidos de armazenamento persistente
Clustered Application
– Suporte para múltiplas linguagens / plataformas (Java, .NET, C, C++)– Segurança de base de dados integrada– Pode trabalhar desde como um simples cache distribuído (integrado ao
Hibernate e.g.) até completo Data Fabric.– Execução de requisições distribuídas (Function Execution Framework)– Map-Reduce– Partitioned in-memory caching – Replicação para distribuição geográfica / WAN
Movendo dados para o Data Fabric
quinta-feira, 27 de outubro de 11
In-Memory Distributed Fabric
DataDataData
Particionamento, distribuição e replicação
de dados em memória
Dados em memoria podem ser assincronamente persistidos /
lidos de armazenamento persistente
Clustered Application
– Suporte para múltiplas linguagens / plataformas (Java, .NET, C, C++)– Segurança de base de dados integrada– Pode trabalhar desde como um simples cache distribuído (integrado ao
Hibernate e.g.) até completo Data Fabric.– Execução de requisições distribuídas (Function Execution Framework)– Map-Reduce– Partitioned in-memory caching – Replicação para distribuição geográfica / WAN
Movendo dados para o Data Fabric
quinta-feira, 27 de outubro de 11
13
Servidor 1
OLAP DB
Transações OLTP em memória
Escrita síncrona ou assíncrona em disco (DB
OLAP)
LOCATOR
Servidor 2 Servidor 3 Servidor 4 Servidor 5
Nó principal da área de memória
HA, particionamento e replicação de dados
Overflow automático para disco caso
necessário
quinta-feira, 27 de outubro de 11
13
Servidor 1
OLAP DB
Transações OLTP em memória
Escrita síncrona ou assíncrona em disco (DB
OLAP)
LOCATOR
Servidor 2 Servidor 3 Servidor 4 Servidor 5
Nó principal da área de memória
HA, particionamento e replicação de dados
Overflow automático para disco caso
necessário
quinta-feira, 27 de outubro de 11
14
Atingindo escalabilidade e elasticidade extremas
Os dados de aplicações
“vivem” aqui
File Systems Databases Mainframes / outros
Os dados de aplicação
“dormem” aqui
Principais Casos de Uso§ Web Session Cache, L2 Cache• Gestão de objetos stateful em ambiente
distribuído
§ App Data Cache, In-memory DB • Banco de dados OLTP baseado em
objetos de extrema alta performance
§ Grid Data Fabric: Client Compute• Data grid compartilhado acessado por
clientes executando lógica de aplicação
§ Grid Data Fabric: Fabric Compute• Data grid compartilhado onde a lógica de
aplicação é distribuída na núvem e executada no próprio grid
quinta-feira, 27 de outubro de 11
Como GemFire se compara aos concorrentes?
Servidor 1 Servidor 2 Servidor 3 Servidor 4 Servidor 5
quinta-feira, 27 de outubro de 11
Como GemFire se compara aos concorrentes?
Servidor 1 Servidor 2 Servidor 3 Servidor 4 Servidor 5
Suporte para múltiplas linguagens / plataformas
simultaneamente
quinta-feira, 27 de outubro de 11
Como GemFire se compara aos concorrentes?
Servidor 1 Servidor 2 Servidor 3 Servidor 4 Servidor 5
Suporte para múltiplas linguagens / plataformas
simultaneamente
Suporte a versionamento de objetos
quinta-feira, 27 de outubro de 11
Como GemFire se compara aos concorrentes?
Servidor 1 Servidor 2 Servidor 3 Servidor 4 Servidor 5
Escrita síncrona ou assíncrona para banco de
dados
Suporte para múltiplas linguagens / plataformas
simultaneamente
Suporte a versionamento de objetos
quinta-feira, 27 de outubro de 11
Como GemFire se compara aos concorrentes?
Servidor 1 Servidor 2 Servidor 3 Servidor 4 Servidor 5
Escrita síncrona ou assíncrona para banco de
dados
Suporte para múltiplas linguagens / plataformas
simultaneamente
Suporte a versionamento de objetos
Cache Loader
quinta-feira, 27 de outubro de 11
Como GemFire se compara aos concorrentes?
Servidor 1 Servidor 2 Servidor 3 Servidor 4 Servidor 5
Escrita síncrona ou assíncrona para banco de
dados
Suporte para múltiplas linguagens / plataformas
simultaneamente
Queries Contínuas
Suporte a versionamento de objetos
Cache Loader
quinta-feira, 27 de outubro de 11
Como GemFire se compara aos concorrentes?
Servidor 1 Servidor 2 Servidor 3 Servidor 4 Servidor 5
Escrita síncrona ou assíncrona para banco de
dados
Suporte para múltiplas linguagens / plataformas
simultaneamente
Queries Contínuas
Suporte a versionamento de objetos
Cache Loader
quinta-feira, 27 de outubro de 11
Como GemFire se compara aos concorrentes?
Servidor 1 Servidor 2 Servidor 3 Servidor 4 Servidor 5
Escrita síncrona ou assíncrona para banco de
dados
Suporte para múltiplas linguagens / plataformas
simultaneamente
Queries Contínuas
Execução distribuída de funções e map-reduce
Suporte a versionamento de objetos
Cache Loader
quinta-feira, 27 de outubro de 11
Como GemFire se compara aos concorrentes?
Servidor 1 Servidor 2 Servidor 3 Servidor 4 Servidor 5
Escrita síncrona ou assíncrona para banco de
dados
Suporte para múltiplas linguagens / plataformas
simultaneamente
Queries Contínuas
Execução distribuída de funções e map-reduce
Suporte a versionamento de objetos
Cache Loader
quinta-feira, 27 de outubro de 11
Como GemFire se compara aos concorrentes?
Servidor 1 Servidor 2 Servidor 3 Servidor 4 Servidor 5
Escrita síncrona ou assíncrona para banco de
dados
Replicação em WAN
Suporte para múltiplas linguagens / plataformas
simultaneamente
Queries Contínuas
Execução distribuída de funções e map-reduce
Suporte a versionamento de objetos
Cache Loader
quinta-feira, 27 de outubro de 11
Performance baseada em acesso a memória
PerformGemFire usa memória em cluster de máquinas para transacionar atualizações de dados, permitindo atualizações 10x a 200x mais rápidas que atualizações serializadas em disco (BD tradicional), sem qualquer risco adicional de perda de dados. Tempos típicos de latência são de geralmente de ~100-400 microsegundos, ao invés de ~5-200 milisegundos.
GemFire pode ainda opcionalmente escrever em disco / banco de dados tradicional de modo síncrono ou assíncrono.Essa funcionalidade é geralmente utilizada para manter registro das transações e dados para OLAP.
quinta-feira, 27 de outubro de 11
Distribuição de Dados
Distribute
GemFire pode manter clusters locais e geograficamente distribuídos sincronizados em tempo real e operar de forma confiável em ambientes fracamente conectados, intermitentes e com banda de rede limitada.
quinta-feira, 27 de outubro de 11
Arquitetura Orientada a Eventos distribuídos
Notificação com entrega garantida de eventos de atualização de dados ocorridos em qualquer dos nós.
Queries Contínuas - migração do modelo polling para orientação a eventos.
Notify
quinta-feira, 27 de outubro de 11
Consultas Paralelas
Controlador batch ou aplicação cliente
Scatter-Gather (Map-Reduce) Queries
Compute
quinta-feira, 27 de outubro de 11
Consultas Paralelas
Controlador batch ou aplicação cliente
Scatter-Gather (Map-Reduce) Queries
Compute
quinta-feira, 27 de outubro de 11
Roteamento inteligente de funções de dados
Execute
Movendo a funcionalidade para os dados corretos ao invés de mover os dados para a funcionalidade
Batch Controller or Client
Data Aware Function
quinta-feira, 27 de outubro de 11
Cloud Ready
Adicione ou remova nós Web, de Aplicação ou de gestão de
dados sob demanda on-the-fly
Web Tier
Application Tier
Load Balancer
Gravação síncrona ou assíncrona opcional para armazenamento
persistente
Discos para overflow (swap) se necessário
Adicione e remova armazenamento persistente segundo demanda on-the-fly.
Pronto para o deployment em ambiente de Cloud - escalável verticalmente e horizontalmente.
quinta-feira, 27 de outubro de 11
22
• Semântica de Banco de Dados OO– OQL (Object Query Language)
SELECT * FROM /root/trades t WHERE t.price < 100
– Continuous Queries
– Indexes
– Transactions– Local– Distributed– Co-located
Escalabilidade Linear
quinta-feira, 27 de outubro de 11
23
SQLFire: GemFire em paradigma relacional / SQL
quinta-feira, 27 de outubro de 11
24
SQLFire
Mesmos benefícios do GemFire com paradigma relacional e interface SQL
Se comporta como um banco de dados SQL padrão, porém se utiliza do GemFire para replicar, particionar e distribuir dados na núvem.
quinta-feira, 27 de outubro de 11
25
Criação de tabelas
Criação de tabela tradicional
Criação de tabela replicada
quinta-feira, 27 de outubro de 11
26
Particionamento e Redundância
Criação de tabela particionada
Criação de tabela particionada e redundante
quinta-feira, 27 de outubro de 11
27
Particionamento e Redundância
Afinal de contas, por quê particionar dados?
quinta-feira, 27 de outubro de 11
28
Co-locação com dados relacionados
Indica ao SQLFire/GemFire armazenar dados relacionados nos mesmos servidores, de modo a obter máxima performance em consultas relacionadas (joins)
quinta-feira, 27 de outubro de 11
29
Persistência (síncrona ou assíncrona)
Indica ao SQLFire/GemFire persistir os dados em armazenamento persistente de modo síncrono ou assíncrono - para redundância adicional ou para alimentar reports / base
OLAP.
quinta-feira, 27 de outubro de 11
Casos de sucesso
Alguns exemplos da tecnologia Gemfireaplicada em casos reais
quinta-feira, 27 de outubro de 11
Global Foreign Exchange
Ø Negociação de milhares de ativos em extrema baixa latência
Ø Autonomia regional (America, Asia, Europa)Ø Garantia transacional e de persistência de
cada negócio efetuadoØ Atualização em tempo real dos dados de
mercadoØ Cálculo imediato da posição global em tempo
real - baseado em eventosØ Distribuição de todas as atualizações
globalmente em tempo realØ Alta disponibilidade (99,99%)Ø Disaster Recovery
Caso Real: Sistema de negociação global de moedas
O projeto atingiu e permitiu:
quinta-feira, 27 de outubro de 11
Vários Oracle Database em cada região(é mantida apenas 1 instancia para arquivamento)
TIBCO Rendezvous para mensageria localIBM MQ Series para mensageria em WANVeritas N+1 Clustering para H/A3 DNS ou Wide IPCustos de administração em 66%
Global Foreign Exchange
Caso Real: Sistema de negociação global de moedas
O projeto permitiu substituir ou eliminar:
quinta-feira, 27 de outubro de 11
Caso real: Web 2.0 Portal – ads customizados
Um site extremamente pupular que atrai novos clientes baseados em bannersBanner customizado em site de parceiro
Web Server do parceiro
1 Banner Ad Server
23
4
Em alguns milisegundos, o servidor de banners deve:
Gerar um ID específico para a requisiçãoAplicar dezenas de regras relacionadas à região, contrato, IP de origem e características do clienteDecidir qual banner aplicar e customizá-lo a partir das regrasArmazenar (transacionar) o banner exibido
Web Portal
quinta-feira, 27 de outubro de 11
Caso real: Web 2.0 Portal – ads customizados
Um site extremamente pupular que atrai novos clientes baseados em banners
Web Server do parceiro
1 Banner Ad Server
23
4
Web Portal
Respostas com latência inferior a 1msAtingiu o target de 2500 banners entregues por segundoProvou-se escalável linearmenteMelhorou a performance da solução antiga baseada em banco de dados popular em 4x
Custou menos que a solução antiga
quinta-feira, 27 de outubro de 11
Caso de execução noturna de batch de re-conciliação de contas
min
0 12060
I/O Wait9%
CPU Busy15%
Mainframe
CPU Unavailable76%
COTS ClusterBatch agora executa em 60 segundos
93% Network Wait! Tempo poderia ainda ser muito reduzido com maior banda de rede!
Migração de batches do Mainframe
Caso real: Batch noturno em mainframe
120 minutos
quinta-feira, 27 de outubro de 11
Benefícios atingidos:
1. Economia de recursos, plataforma moderna e escalável
2. Quando algo de errado ocorre no batch, é possível se descobrir em apenas 60 segundos
3. Agora o hardware e dados estão disponíveis os outros 119 minutos para:
• Fraud detection• Compliance regulatório• Re-calcular o risco em outros 119 cenários
• Atividades ligadas ao negócio
• Aumentando a banda de rede, pode-se obter o cálculo em tempo real!
Migração de batches do Mainframe
Caso real: Batch noturno em mainframe
quinta-feira, 27 de outubro de 11
655 sites, 11 mil usuáriosReal-time, tri-dimensional, NASA World Wind User Interface60,000 atualizações per minuteUsuários
President of the United StatesUS Secretary of Defense
Todos os chefes de comandoTodos os comandantes do exército
Sendo avaliado para utilização por todos os aliados dos EUA
Monitoramento e posicionamento de ativos militares - EUA
Caso real: DISA / DOD Global Command and Control
quinta-feira, 27 de outubro de 11
Armazenamento centralizado de dados impossívelIntegração de várias agências e divisõesMuitas aplicações lendo e escrevendo simultaneamente os dadosRedes mudando constantemente, não-confiáveis, móveis, lentasAté 60 mil atualizações de objetos por minuto (picos de 20 mil por segundo)
Até 70 pontos de atualização de dados diferentes.
Necessidade de um sistema real-time para rastrear pontos e alvos amigos e inimigos e que possa ser usado e compartilhado por todos envolvidos no cenário de guerra.
Northrop Grumman (integrador) avaliou as seguintes tecnologias - e escolheu o GemFire:•RDBMS – Oracle, Sybase, Postgres, TimesTen, MySQL•ODBMS - Objectivity•jCache – GemFire, Oracle Coherence •JMS – SonicMQ, BEA Weblogic, IBM, JBoss MQ•TIBCO Rendezvous •Web Services, Rest
Monitoramento e posicionamento de ativos militares - EUA
Caso real: DISA / DOD Global Command and Control
quinta-feira, 27 de outubro de 11
39
Modern Frameworks and Tools
Lean, Cloud-scale Application Services
ü Developer Productivity and Application Portability
ü Optimized Runtime and Accelerated Deployment
Virtual Datacenter Cloud Infrastructure and Management
VMware Cloud Application Platform
quinta-feira, 27 de outubro de 11
39
Modern Frameworks and Tools
Lean, Cloud-scale Application Services
ü Developer Productivity and Application Portability
ü Optimized Runtime and Accelerated Deployment Application Services
vFabric
Virtual Datacenter Cloud Infrastructure and Management
VMware Cloud Application Platform
Developer Frameworks and Tools
…
quinta-feira, 27 de outubro de 11
40
VMware Cloud Application Platform
Virtual Datacenter Cloud Infrastructure and Management
RichWeb
ProgrammingModel
Social and Mobile
quinta-feira, 27 de outubro de 11
40
VMware Cloud Application Platform
Virtual Datacenter Cloud Infrastructure and Management
RichWeb
ProgrammingModel
Social and Mobile
DataAccess
IntegrationPatterns
BatchFramework
quinta-feira, 27 de outubro de 11
40
VMware Cloud Application Platform
Virtual Datacenter Cloud Infrastructure and Management
RichWeb
ProgrammingModel
Social and Mobile
DataAccess
IntegrationPatterns
BatchFramework
WaveMakerSpring Tool Suite
Code2CloudServices
quinta-feira, 27 de outubro de 11
40
VMware Cloud Application Platform
Virtual Datacenter Cloud Infrastructure and Management
RichWeb
ProgrammingModel
Social and Mobile
DataAccess
IntegrationPatterns
BatchFramework
WaveMakerSpring Tool Suite
Code2CloudServices
JavaOptimizations
(EM4J, …)
Java Runtime(tc Server)
Web Runtime(ERS)
quinta-feira, 27 de outubro de 11
40
VMware Cloud Application Platform
Virtual Datacenter Cloud Infrastructure and Management
RichWeb
ProgrammingModel
Social and Mobile
DataAccess
IntegrationPatterns
BatchFramework
WaveMakerSpring Tool Suite
Code2CloudServices
JavaOptimizations
(EM4J, …)
Java Runtime(tc Server)
Web Runtime(ERS)
Messaging(RabbitMQ)
Global Data(GemFire)
quinta-feira, 27 de outubro de 11
40
VMware Cloud Application Platform
Virtual Datacenter Cloud Infrastructure and Management
RichWeb
ProgrammingModel
Social and Mobile
DataAccess
IntegrationPatterns
BatchFramework
WaveMakerSpring Tool Suite
Code2CloudServices
App Monitoring(Spring Insight)
Performance Mgmt(Hyperic)
Automated App Provisioning
(AppDirector)
JavaOptimizations
(EM4J, …)
Java Runtime(tc Server)
Web Runtime(ERS)
Messaging(RabbitMQ)
Global Data(GemFire)
Data Director
quinta-feira, 27 de outubro de 11
41
Application Infrastructure for the Cloud Generation
VMware vFabric Cloud Application Platform
Dynamic Load Balancer
Performance Management
Policy-driven Automation
Elastic App Server
Cloud Messaging
Global Data Management
Rich Web Integration Batch Data Access Social/Cloud Tool Suite
Virtual Datacenter Cloud Infrastructure and Management
tc Server ERS (Apache) HypericRabbitMQGemFire App Director*
Frameworks & Tools
vFabricPlatform Services
quinta-feira, 27 de outubro de 11
42
FAQ:§ É possível mesmo garantir HA com dados somente em memória?
• Sim! O particionamento e replicação de dados em memória garante a alta disponibilidade em índices iguais aos de armazenamentos físicos (disco).
§ Ok, mas mesmo assim posso fazer armazenamento síncrono em banco de dados?
• Certamente. Escrita síncrona ou assíncrona em banco de dados ou disco rígido.
§ Os servidores precisam ter RAM suficiente para todos os dados do banco?
• Não. Basicamente o seu modelo de dados pode/deve ser particionado entre vários servidores e a memória total seria a soma da memória de todos eles! Mesmo assim, caso necessário, o GemFire escreve o “excesso” de dados em disco (overflow) e recupera quando necessário, mesmo assim provendo performance muito superior aos DBs tradicionais.
§ Posso começar com um ambiente menor e ir escalando segundo demanda?
• Sem dúvida. Tanto o software quanto o modelo de licensiamento são escaláveis segundo o ambiente e modo de utilização. O GemFire pode ser adotado como um simples Cache de dados ou um completo Data Fabric.
§ GemFire = SqlFire?
• São produtos diferentes. Porém, o SQLFire possui o GemFire em seu core, oferecendo uma interface relacional (SQL) porém sem arquitetura orientada a eventos.
quinta-feira, 27 de outubro de 11
Architecting Infinitely Scalable Systems
http://blogs.msdn.com/b/pathelland/
A seminal paper on the architecture of elastic applications was written by Pat Helland (Tandem Computing, Amazon.com, Microsoft)
“Life Beyond Distributed Transactions: an Apostate’s Opinion”http://www.cidrdb.org/cidr2007/papers/cidr07p15.pdf
This paper describes how our application architectures need to change in order to achieve infinite scalability and elasticity without using large hardware
Leitura Recomendada
quinta-feira, 27 de outubro de 11
Start small, Grow without Limit
Planning for scalabilityin cloud environments
quinta-feira, 27 de outubro de 11
Description Benefits
• Higher server consolidation through memory over-commit for Java workloads
• Protect Java applications against workload spikes without wasting memory
• Use virtualization to overcome the limitation of Java’s static heap
• New ‘memory balloon’ runs inside JVM to capture unused memory and return it to ESX
• Memory returned to JVM when it is under pressure
Use ESX to Share Memory Between VMs Running JavaElastic Memory for Java (EM4J)
quinta-feira, 27 de outubro de 11
Aumentando a escalabilidade com topologia Client
quinta-feira, 27 de outubro de 11
Aumentando a escalabilidade com topologia Client
Disk
quinta-feira, 27 de outubro de 11
Aumentando a escalabilidade com topologia Client
Disk
quinta-feira, 27 de outubro de 11
Aumentando a escalabilidade com topologia Client
Disk Disk Disk
quinta-feira, 27 de outubro de 11