Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

GemFire Data Fabric: Extrema performance e throughput transacional com alta disponibilidade

1,312 views

Published on

  • Be the first to comment

GemFire Data Fabric: Extrema performance e throughput transacional com alta disponibilidade

  1. 1. GemFire Enterprise Data Fabric Alta Disponibilidade de dados com extrema performance e confiabilidade Frederico Melo fmelo@vmware.com Cloud Application Platform Specialist LATAM Outubro 2011 © 2009 VMware Inc. All rights reservedquinta-feira, 27 de outubro de 11
  2. 2. As limitações dos RDBMSs tradicionais... Típico deployment para aplicações Aumento expressivo no corporativas em ambiente HA número de nós na camada de aplicação exige que a camada de acesso a dados escale na mesma proporção. Aumento na demanda de acesso a dados (leitura e escrita) Aumento no número de requisições ao cluster de banco de dados Alta disponibilidade no banco de dados provida por Storage compartlilhado 72quinta-feira, 27 de outubro de 11
  3. 3. Escalando com infra-estrutura elástica Load Balancer Add/remove web servers Web Tier Stateless Application Tier Add/remove application servers Database Tier Move to bigger machine Stateful Storage Tier Add/reconfigure storagequinta-feira, 27 de outubro de 11
  4. 4. Escalando com infra-estrutura elástica Load Balancer Add/remove web servers Web Tier Stateless Application Tier Add/remove application servers Database Tier Move to bigger machine Stateful Storage Tier Add/reconfigure storagequinta-feira, 27 de outubro de 11
  5. 5. Escalando com infra-estrutura elástica Load Balancer Web Tier Stateless Application Tier Database Tier Move to bigger machine Stateful Storage Tier Add/reconfigure storagequinta-feira, 27 de outubro de 11
  6. 6. Escalando com infra-estrutura elástica As camadas Web de de Aplicação podem ser facilmente separadas e consolidadas. Servidores podem ser Load Balancer adicionados ou removidos segundo Add/remove web/application demanda - on the fly. servers Web Tier Application Tier Como escalar horizontalmente de forma linear??? A base de dados somente “cresce” Database Tier movendo a máquina (física ou virtual) para um servidor com maior Move to bigger machine capacidade Os discos podem ser Storage Tier virtualizados e crescer sobre demanda Add/reconfigure storagequinta-feira, 27 de outubro de 11
  7. 7. Porém... ... I/O se torna o gargalo 6quinta-feira, 27 de outubro de 11
  8. 8. Porém... ... I/O se torna o gargalo ~ 3.000.000 x mais Bancos de Dados podem lento!!! até fazer caching de dados para leitura, mas... Alterações de dados demandam necessariamente acesso síncrono ao armazenamento rígido e locking distribuído 77quinta-feira, 27 de outubro de 11
  9. 9. Geo-replicação Replicação entre data centers Site principal Site backup Replicação de banco (Data Guard) replicação de storage 8quinta-feira, 27 de outubro de 11
  10. 10. Sua aplicação está preparada para ambiente Cloud? “ The big glaring hole [with cloud] is data handling. ” -Adrian Kunzle, MD Head of Engineering & Architecture, JPMorgan Chase File Systems Databases Other Systems 9quinta-feira, 27 de outubro de 11
  11. 11. Virtualizando também dados Load Balancer Web Tier Application Tier Database Tier Storage Tierquinta-feira, 27 de outubro de 11
  12. 12. Virtualizando também dados Load Balancer Web Tier Application Tier Database Tier Storage Tierquinta-feira, 27 de outubro de 11
  13. 13. Virtualizando também dados Load Balancer Web Tier Application Tier Database Tier Storage Tierquinta-feira, 27 de outubro de 11
  14. 14. Movendo dados para o Data Fabric Load Balancer Web Tier Application Tier Database Tier Storage Tierquinta-feira, 27 de outubro de 11
  15. 15. Movendo dados para o Data Fabric Load Balancer Web Tier Application Tier Storage Tierquinta-feira, 27 de outubro de 11
  16. 16. Movendo dados para o Data Fabric Load Balancer Add/remove web/application/data servers Web Tier Application Tier Storage Tier Add/remove storage Disks may be direct or network attachedquinta-feira, 27 de outubro de 11
  17. 17. Movendo dados para o Data Fabric Load Balancer Add/remove web/application/data servers Web Tier Application Tier Storage Tier Add/remove storage Disks may be direct or network attached Optional reliable, asynchronous feed to Data Warehouse or Archival Databasequinta-feira, 27 de outubro de 11
  18. 18. Movendo dados para o Data Fabric In-Memory Distributed Fabric Dados em memoria podem ser assincronamente persistidos / lidos de armazenamento persistente Clustered Application Data Data Data Particionamento, distribuição e replicação de dados em memória – 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 / WANquinta-feira, 27 de outubro de 11
  19. 19. Movendo dados para o Data Fabric In-Memory Distributed Fabric Dados em memoria podem ser assincronamente persistidos / lidos de armazenamento persistente Clustered Application Data Data Data Particionamento, distribuição e replicação de dados em memória – 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 / WANquinta-feira, 27 de outubro de 11
  20. 20. HA, particionamento e replicação de dados LOCATOR Transações Servidor 1 Servidor 2 Servidor 3 Servidor 4 Servidor 5 OLTP em memória Overflow automático para disco caso necessário Escrita síncrona ou assíncrona em disco (DB OLAP) Nó principal da área de memória OLAP DB 13quinta-feira, 27 de outubro de 11
  21. 21. HA, particionamento e replicação de dados LOCATOR Transações Servidor 1 Servidor 2 Servidor 3 Servidor 4 Servidor 5 OLTP em memória Overflow automático para disco caso necessário Escrita síncrona ou assíncrona em disco (DB OLAP) Nó principal da área de memória OLAP DB 13quinta-feira, 27 de outubro de 11
  22. 22. Atingindo escalabilidade e elasticidade extremas 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 Os dados de objetos de extrema alta performance aplicações § Grid Data Fabric: Client Compute “vivem” aqui • 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 Os dados de aplicação é distribuída na núvem e executada no próprio grid aplicação“dormem” aqui File Systems Databases Mainframes / outros 14quinta-feira, 27 de outubro de 11
  23. 23. Como GemFire se compara aos concorrentes? Servidor 1 Servidor 2 Servidor 3 Servidor 4 Servidor 5quinta-feira, 27 de outubro de 11
  24. 24. Como GemFire se compara aos concorrentes? Suporte para múltiplas linguagens / plataformas simultaneamente Servidor 1 Servidor 2 Servidor 3 Servidor 4 Servidor 5quinta-feira, 27 de outubro de 11
  25. 25. Como GemFire se compara aos concorrentes? Suporte para múltiplas linguagens / plataformas simultaneamente Suporte a versionamento de objetos Servidor 1 Servidor 2 Servidor 3 Servidor 4 Servidor 5quinta-feira, 27 de outubro de 11
  26. 26. Como GemFire se compara aos concorrentes? Suporte para múltiplas linguagens / plataformas simultaneamente Suporte a versionamento de objetos Servidor 1 Servidor 2 Servidor 3 Servidor 4 Servidor 5 Escrita síncrona ou assíncrona para banco de dadosquinta-feira, 27 de outubro de 11
  27. 27. Como GemFire se compara aos concorrentes? Suporte para múltiplas linguagens / plataformas simultaneamente Suporte a versionamento de objetos Servidor 1 Servidor 2 Servidor 3 Servidor 4 Servidor 5 Cache Loader Escrita síncrona ou assíncrona para banco de dadosquinta-feira, 27 de outubro de 11
  28. 28. Como GemFire se compara aos concorrentes? Suporte para múltiplas Queries Contínuas linguagens / plataformas simultaneamente Suporte a versionamento de objetos Servidor 1 Servidor 2 Servidor 3 Servidor 4 Servidor 5 Cache Loader Escrita síncrona ou assíncrona para banco de dadosquinta-feira, 27 de outubro de 11
  29. 29. Como GemFire se compara aos concorrentes? Suporte para múltiplas Queries Contínuas linguagens / plataformas simultaneamente Suporte a versionamento de objetos Servidor 1 Servidor 2 Servidor 3 Servidor 4 Servidor 5 Cache Loader Escrita síncrona ou assíncrona para banco de dadosquinta-feira, 27 de outubro de 11
  30. 30. Como GemFire se compara aos concorrentes? Suporte para múltiplas Queries Contínuas linguagens / plataformas simultaneamente Suporte a versionamento de objetos Servidor 1 Servidor 2 Servidor 3 Servidor 4 Servidor 5 Cache Loader Escrita síncrona ou assíncrona para banco de dados Execução distribuída de funções e map-reducequinta-feira, 27 de outubro de 11
  31. 31. Como GemFire se compara aos concorrentes? Suporte para múltiplas Queries Contínuas linguagens / plataformas simultaneamente Suporte a versionamento de objetos Servidor 1 Servidor 2 Servidor 3 Servidor 4 Servidor 5 Cache Loader Escrita síncrona ou assíncrona para banco de dados Execução distribuída de funções e map-reducequinta-feira, 27 de outubro de 11
  32. 32. Como GemFire se compara aos concorrentes? Suporte para múltiplas Queries Contínuas linguagens / plataformas simultaneamente Suporte a versionamento de Replicação em WAN objetos Servidor 1 Servidor 2 Servidor 3 Servidor 4 Servidor 5 Cache Loader Escrita síncrona ou assíncrona para banco de dados Execução distribuída de funções e map-reducequinta-feira, 27 de outubro de 11
  33. 33. Performance baseada em acesso a memória GemFire usa memória em cluster de máquinas para transacionar Perform 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
  34. 34. 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
  35. 35. Arquitetura Orientada a Eventos distribuídos Notify 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.quinta-feira, 27 de outubro de 11
  36. 36. Consultas Paralelas Compute Controlador batch ou aplicação cliente Scatter-Gather (Map-Reduce) Queriesquinta-feira, 27 de outubro de 11
  37. 37. Consultas Paralelas Compute Controlador batch ou aplicação cliente Scatter-Gather (Map-Reduce) Queriesquinta-feira, 27 de outubro de 11
  38. 38. Roteamento inteligente de funções de dados Data Aware Function Execute Batch Controller or Client Movendo a funcionalidade para os dados corretos ao invés de mover os dados para a funcionalidadequinta-feira, 27 de outubro de 11
  39. 39. Cloud Ready Pronto para o deployment em ambiente de Cloud - escalável verticalmente e horizontalmente. Adicione ou remova nós Web, de Load Balancer Aplicação ou de gestão de dados sob demanda on-the-fly Web Tier Application Tier Adicione e remova Discos para overflow (swap) se armazenamento persistente necessário segundo demanda on-the-fly. Gravação síncrona ou assíncrona opcional para armazenamento persistentequinta-feira, 27 de outubro de 11
  40. 40. • Semântica de Banco de Dados OO – OQL (Object Query Language) SELECT * FROM /root/trades t WHERE t.price < 100 – Continuous Queries Escalabilidade Linear – Indexes – Transactions – Local – Distributed – Co-located 22quinta-feira, 27 de outubro de 11
  41. 41. SQLFire: GemFire em paradigma relacional / SQL 23quinta-feira, 27 de outubro de 11
  42. 42. 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. 24quinta-feira, 27 de outubro de 11
  43. 43. Criação de tabelas Criação de tabela tradicional Criação de tabela replicada 25quinta-feira, 27 de outubro de 11
  44. 44. Particionamento e Redundância Criação de tabela particionada Criação de tabela particionada e redundante 26quinta-feira, 27 de outubro de 11
  45. 45. Particionamento e Redundância Afinal de contas, por quê particionar dados? 27quinta-feira, 27 de outubro de 11
  46. 46. 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) 28quinta-feira, 27 de outubro de 11
  47. 47. 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. 29quinta-feira, 27 de outubro de 11
  48. 48. Casos de sucesso Alguns exemplos da tecnologia Gemfire aplicada em casos reaisquinta-feira, 27 de outubro de 11
  49. 49. Global Foreign Exchange Caso Real: Sistema de negociação global de moedas O projeto atingiu e permitiu: Ø 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 Recoveryquinta-feira, 27 de outubro de 11
  50. 50. Global Foreign Exchange Caso Real: Sistema de negociação global de moedas O projeto permitiu substituir ou eliminar: Vários Oracle Database em cada região (é mantida apenas 1 instancia para arquivamento) TIBCO Rendezvous para mensageria local IBM MQ Series para mensageria em WAN Veritas N+1 Clustering para H/A 3 DNS ou Wide IP Custos de administração em 66%quinta-feira, 27 de outubro de 11
  51. 51. Web Portal Caso real: Web 2.0 Portal – ads customizados Um site extremamente pupular que atrai novos clientes baseados em banners Banner customizado em site de parceiro Em alguns milisegundos, o servidor de banners deve: Gerar um ID específico para a requisição Aplicar dezenas de regras relacionadas à região, contrato, IP de origem e características do cliente Decidir qual banner aplicar e customizá-lo a partir das regras Armazenar (transacionar) o banner exibido 4 2 3 1 Banner Ad Server Web Server do parceiroquinta-feira, 27 de outubro de 11
  52. 52. Web Portal Caso real: Web 2.0 Portal – ads customizados Um site extremamente pupular que atrai novos clientes baseados em banners Respostas com latência inferior a 1ms Atingiu o target de 2500 banners entregues por segundo Provou-se escalável linearmente Melhorou a performance da solução antiga baseada em banco de dados popular em 4x Custou menos que a solução antiga 4 2 3 1 Banner Ad Server Web Server do parceiroquinta-feira, 27 de outubro de 11
  53. 53. Migração de batches do Mainframe Caso real: Batch noturno em mainframe Caso de execução noturna de batch de re-conciliação de contas 0 60 120 min CPU Unavailable CPU Busy I/O Wait 76% 15% 9% Mainframe 120 minutos Batch agora executa em 60 segundos COTS Cluster 93% Network Wait! Tempo poderia ainda ser muito reduzido com maior banda de rede!quinta-feira, 27 de outubro de 11
  54. 54. Migração de batches do Mainframe Caso real: Batch noturno em mainframe 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!quinta-feira, 27 de outubro de 11
  55. 55. Monitoramento e posicionamento de ativos militares - EUA Caso real: DISA / DOD Global Command and Control 655 sites, 11 mil usuários Real-time, tri-dimensional, NASA World Wind User Interface 60,000 atualizações per minute Usuários President of the United States US Secretary of Defense Todos os chefes de comando Todos os comandantes do exército Sendo avaliado para utilização por todos os aliados dos EUAquinta-feira, 27 de outubro de 11
  56. 56. Monitoramento e posicionamento de ativos militares - EUA Caso real: DISA / DOD Global Command and Control Armazenamento centralizado de dados impossível Integração de várias agências e divisões Muitas aplicações lendo e escrevendo simultaneamente os dados Redes mudando constantemente, não-confiáveis, móveis, lentas Até 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, Restquinta-feira, 27 de outubro de 11
  57. 57. VMware Cloud Application Platform Modern Frameworks and Tools ü Developer Productivity and Application Portability Lean, Cloud-scale Application Services ü Optimized Runtime and Accelerated Deployment Virtual Datacenter Cloud Infrastructure and Management 39quinta-feira, 27 de outubro de 11
  58. 58. VMware Cloud Application Platform Modern Frameworks and Tools … ü Developer Productivity and Application Portability Developer Frameworks and Tools Lean, Cloud-scale Application Services vFabric ü Optimized Runtime and Accelerated Deployment Application Services Virtual Datacenter Cloud Infrastructure and Management 39quinta-feira, 27 de outubro de 11
  59. 59. VMware Cloud Application Platform Programming Rich Social and Model Web Mobile Virtual Datacenter Cloud Infrastructure and Management 40quinta-feira, 27 de outubro de 11
  60. 60. VMware Cloud Application Platform Programming Rich Social and Data Integration Batch Model Web Mobile Access Patterns Framework Virtual Datacenter Cloud Infrastructure and Management 40quinta-feira, 27 de outubro de 11
  61. 61. VMware Cloud Application Platform Programming Rich Social and Data Integration Batch Spring WaveMaker Code2Cloud Model Web Mobile Access Patterns Framework Tool Suite Services Virtual Datacenter Cloud Infrastructure and Management 40quinta-feira, 27 de outubro de 11
  62. 62. VMware Cloud Application Platform Programming Rich Social and Data Integration Batch Spring WaveMaker Code2Cloud Model Web Mobile Access Patterns Framework Tool Suite Services Java Runtime Web Runtime (tc Server) (ERS) Java Optimizations Virtual Datacenter (EM4J, …) Cloud Infrastructure and Management 40quinta-feira, 27 de outubro de 11
  63. 63. VMware Cloud Application Platform Programming Rich Social and Data Integration Batch Spring WaveMaker Code2Cloud Model Web Mobile Access Patterns Framework Tool Suite Services Java Runtime Web Runtime Messaging Global Data (tc Server) (ERS) (RabbitMQ) (GemFire) Java Optimizations Virtual Datacenter (EM4J, …) Cloud Infrastructure and Management 40quinta-feira, 27 de outubro de 11
  64. 64. VMware Cloud Application Platform Programming Rich Social and Data Integration Batch Spring WaveMaker Code2Cloud Model Web Mobile Access Patterns Framework Tool Suite Services Java Runtime Web Runtime Messaging Global Data App Monitoring Performance Mgmt (tc Server) (ERS) (RabbitMQ) (GemFire) (Spring Insight) (Hyperic) Data Director Java Automated Optimizations Virtual Datacenter App Provisioning (EM4J, …) (AppDirector) Cloud Infrastructure and Management 40quinta-feira, 27 de outubro de 11
  65. 65. Application Infrastructure for the Cloud Generation VMware vFabric Cloud Application Platform Frameworks & Tools Rich Web Integration Batch Data Access Social/Cloud Tool Suite vFabric Elastic Global Data Cloud Dynamic Load Performance Policy-driven tc Server App Server GemFire Management RabbitMQ Messaging ERS (Apache) Balancer Hyperic Management App Director* Automation Platform Services Virtual Datacenter Cloud Infrastructure and Management 41quinta-feira, 27 de outubro de 11
  66. 66. 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. 42quinta-feira, 27 de outubro de 11
  67. 67. Leitura Recomendada Architecting Infinitely Scalable Systems 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 http://blogs.msdn.com/b/pathelland/ This paper describes how our application architectures need to change in order to achieve infinite scalability and elasticity without using large hardwarequinta-feira, 27 de outubro de 11
  68. 68. Start small, Grow without Limit Planning for scalability in cloud environmentsquinta-feira, 27 de outubro de 11
  69. 69. Frederico Melo fmelo@vmware.com twitter: fredmelo_br 45quinta-feira, 27 de outubro de 11
  70. 70. Use ESX to Share Memory Between VMs Running Java Elastic Memory for Java (EM4J) Description Benefits • Use virtualization to • Higher server consolidation through memory over-commit overcome the limitation for Java workloads of Java’s static heap • Protect Java applications against workload spikes without • New ‘memory balloon’ wasting memory runs inside JVM to capture unused memory and return it to ESX • Memory returned to JVM when it is under pressurequinta-feira, 27 de outubro de 11
  71. 71. Aumentando a escalabilidade com topologia Clientquinta-feira, 27 de outubro de 11
  72. 72. Aumentando a escalabilidade com topologia Client Diskquinta-feira, 27 de outubro de 11
  73. 73. Aumentando a escalabilidade com topologia Client Diskquinta-feira, 27 de outubro de 11
  74. 74. Aumentando a escalabilidade com topologia Client Disk Disk Diskquinta-feira, 27 de outubro de 11

×