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.

Tecnologias para sistemas distribuidos escalaveis

1,413 views

Published on

Published in: Education

Tecnologias para sistemas distribuidos escalaveis

  1. 1. Tecnologias para sistemas distribuídos escaláveis MongoDB, Redis, Hadoop, Storm Cesar Schneider Eworks Tecnologia @cesschneider cesar@eworks.com.br
  2. 2. Quem sou eu • Inventor desde 1988 • Programador desde 1998 • Analista desde 2003 • Gerente/Consultor desde 2008 • “Canivete suiço” desde 2010 • “Hacker” desde 2012 • Arquiteto/Designer desde 2013
  3. 3. O que já aprendi e vivi • C/C++, PHP, Java, Ruby, JavaScript, HTML, CSS, Action Script, Bash, Linux. • Trabalhei em diferentes projetos no Brasil, Emirados Árabes, Chile e USA. • Experiência com os mercados de gerenciamento de risco, rastreamento de veículos, geolocalização, GIS, e- commerce, aplicações móveis, integração de sistemas, Web Services e administração de servidores Linux. • Apaixonado por esportes radicais, música eletrônica e automobilismo.
  4. 4. Computação Distribuída • É uma referência à computação paralela e descentralizada, realizada por dois ou mais computadores conectados através de uma rede, cujo objetivo é concluir uma tarefa em comum. • Uma coleção de computadores independentes que aparecem para o usuário como um único sistema.
  5. 5. Computação Distribuída
  6. 6. Sistemas Escaláveis • Um sistema é descrito como escalável se permanece eficiente quando há um aumento significativo no número de recursos (dados) e no número de usuários • São construídos com base numa arquitetura distribuída e que permite adição de novos nós sem que a aplicação necessite ser modificada
  7. 7. Arquitetura Escalável
  8. 8. Tecnologias escaláveis • MongoDB: base de dados orientado à documentos ou “NoSQL” • Redis: armazenamento de objetos em memória RAM • Hadoop: processamento de grandes volumes de dados usando Map/Reduce • Storm: processamento de dados em tempo real através de “workflows”
  9. 9. Banco de dados orientado a documento que permite armazenar estruturas de dados com alta performance, disponibilidade, escalabilidade e esquemas flexíveis. Um banco de dados possui várias coleções (tabelas). Uma coleção possui vários documentos (registro). Um documento possui vários pares chave/valor.
  10. 10. • Flexibilidade: dados armazenados no formato JSON • Velocidade: consultas são mais rápidas porque não existem “joins” • Escalabilidade: capacidade de carga pode ser aumentada facilmente usando “shards” • Recursos: indices geoespaciais, queries dinâmicas, ordenação, agregação, replicação
  11. 11. { name: “Cesar Schneider”, email: “cesar@eworks.com.br”, age: 34, skills: *“C”, “PHP”, “Java”+, availableForConsulting: true }
  12. 12. Relacional Documento Escalonamento Possível porém complexo devido a arquitetura Principal vantagem por ter um arquitetura flexível e sem esquema definido Consistência Ponto forte. Estrutura rígida garante a consistência dos dados Eventual, mas garante acesso ao último valor atualizado Disponibilidade Pode não suportar uma grande demanda de dados Fator fundamental. Algo grau de distribuição permite maior número de consultas
  13. 13. Servidor de estruturas da dados complexas, armazenadas em memória RAM, que permitem a execução de operações complexas e manipulação de dados com baixa latência. Possibilita a execução de operações atômicas como concatenar strings, incrementar contadores, ordenar listas, computar interseções, uniões e diferenças.
  14. 14. • Twitter • Instagram • Digg • Stack Overflow • Flickr • Mercado Livre
  15. 15. Data types • Strings (“string”) • Lists (“a”, “a”, “b”, “b”, ”c”, ”c”) • Sets (“a”, ”b”, “c”) • Hashes (“username cesar password 12345”) • Sorted sets (cada elemento possui um score)
  16. 16. $ redis-cli set mykey "my binary safe value" OK $ redis-cli get mykey my binary safe value $ redis-cli set counter 100 OK $ redis-cli incr counter (integer) 101 $ redis-cli incr counter (integer) 102
  17. 17. Use cases • Auto complete • Message queue • Publish/subscribe • Notification center • Sorting/Ranking • Timeline
  18. 18. É framework mantido pela Apache Foundation que permite processamento de grandes volumes de dados distribuídos em um cluster que pode conter algumas dezenas ou milhares de nós, onde cada nós executa e armazena dados de localmente. Ao invés de utilizar hardwares caros e com alta disponibilidade, é possível montar um cluster Hadoop com qualquer tipo de máquina porque foi desenhado com esta finalidade.
  19. 19. • Hadoop Common • Hadoop Distributed File System (HDFS) • Hadoop YARN (job scheduling and cluster resource management) • Hadoop MapReduce (YARN based parallel data processing) • Ambari (web-based monitoring, management and provisioning) • AVRO (data serialization system) • Cassandra (multi-master database sem SPF) • Hbase (distributed database for structured data and big tables) • Hive (datawarehouse infrastructure for data summarization) • Pig (data-flow language and execution framework) • Mahout (machine learning e data mining) • Zookeeper (serviço de coordenação para aplicações distribuídas)
  20. 20. • Indexação de busca de produtos (Amazon) • Sistema de recomendação (Netflix) • Analise de logs e relatórios analíticos (Facebook) • Analise de metadados de arquivos de audio (last.fm) • Pessoas que talvez você conheça (LinkedIn) • Previsão de resultados (Obama)
  21. 21. Storm Sistema distribuído de processamento de dados em tempo real a partir de “streams” de dados. Uma topologia Storm consume “streams” de dados realizando processamentos complexos destas informações, reparticionando estes dados em diversar fases de processamento de acordo com a necessidade do resultado final.
  22. 22. Storm Use Cases • Twitter • Groupon • Rubicon Project • Full Contact • Alibaba • Mercado Livre
  23. 23. Storm Architecture
  24. 24. Storm Concepts • Topologies (grafos de transformações de dados composto por nós que podem ser “spouts” ou “bolts”) • Streams (compostos por fontes de dados e processadores de dados) • Data Models (definição dos campos e tipos de dados do resultado final)
  25. 25. Storm Topology
  26. 26. Storm Topology TopologyBuilder builder = new TopologyBuilder(); builder.setSpout("sentences", new RandomSentenceSpout(), 5); builder.setBolt("split", new SplitSentence(), 8) .shuffleGrouping("sentences"); builder.setBolt("count", new WordCount(), 12) .fieldsGrouping("split", new Fields("word"));
  27. 27. That’s all, folks!

×