Tecnologias para sistemas distribuidos escalaveis
-
Upload
luiz-bettega -
Category
Education
-
view
731 -
download
1
Transcript of Tecnologias para sistemas distribuidos escalaveis
![Page 1: Tecnologias para sistemas distribuidos escalaveis](https://reader033.fdocument.pub/reader033/viewer/2022051015/556253bdd8b42aa02d8b51ea/html5/thumbnails/1.jpg)
Tecnologias para sistemas distribuídos escaláveis
MongoDB, Redis, Hadoop, Storm
Cesar SchneiderEworks Tecnologia
![Page 2: Tecnologias para sistemas distribuidos escalaveis](https://reader033.fdocument.pub/reader033/viewer/2022051015/556253bdd8b42aa02d8b51ea/html5/thumbnails/2.jpg)
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
![Page 3: Tecnologias para sistemas distribuidos escalaveis](https://reader033.fdocument.pub/reader033/viewer/2022051015/556253bdd8b42aa02d8b51ea/html5/thumbnails/3.jpg)
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.
![Page 4: Tecnologias para sistemas distribuidos escalaveis](https://reader033.fdocument.pub/reader033/viewer/2022051015/556253bdd8b42aa02d8b51ea/html5/thumbnails/4.jpg)
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.
![Page 5: Tecnologias para sistemas distribuidos escalaveis](https://reader033.fdocument.pub/reader033/viewer/2022051015/556253bdd8b42aa02d8b51ea/html5/thumbnails/5.jpg)
Computação Distribuída
![Page 6: Tecnologias para sistemas distribuidos escalaveis](https://reader033.fdocument.pub/reader033/viewer/2022051015/556253bdd8b42aa02d8b51ea/html5/thumbnails/6.jpg)
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
![Page 7: Tecnologias para sistemas distribuidos escalaveis](https://reader033.fdocument.pub/reader033/viewer/2022051015/556253bdd8b42aa02d8b51ea/html5/thumbnails/7.jpg)
Arquitetura Escalável
![Page 8: Tecnologias para sistemas distribuidos escalaveis](https://reader033.fdocument.pub/reader033/viewer/2022051015/556253bdd8b42aa02d8b51ea/html5/thumbnails/8.jpg)
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”
![Page 9: Tecnologias para sistemas distribuidos escalaveis](https://reader033.fdocument.pub/reader033/viewer/2022051015/556253bdd8b42aa02d8b51ea/html5/thumbnails/9.jpg)
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.
![Page 10: Tecnologias para sistemas distribuidos escalaveis](https://reader033.fdocument.pub/reader033/viewer/2022051015/556253bdd8b42aa02d8b51ea/html5/thumbnails/10.jpg)
• 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
![Page 11: Tecnologias para sistemas distribuidos escalaveis](https://reader033.fdocument.pub/reader033/viewer/2022051015/556253bdd8b42aa02d8b51ea/html5/thumbnails/11.jpg)
{name: “Cesar Schneider”,email: “[email protected]”,age: 34,skills: [“C”, “PHP”, “Java”],availableForConsulting: true
}
![Page 12: Tecnologias para sistemas distribuidos escalaveis](https://reader033.fdocument.pub/reader033/viewer/2022051015/556253bdd8b42aa02d8b51ea/html5/thumbnails/12.jpg)
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
![Page 13: Tecnologias para sistemas distribuidos escalaveis](https://reader033.fdocument.pub/reader033/viewer/2022051015/556253bdd8b42aa02d8b51ea/html5/thumbnails/13.jpg)
![Page 14: Tecnologias para sistemas distribuidos escalaveis](https://reader033.fdocument.pub/reader033/viewer/2022051015/556253bdd8b42aa02d8b51ea/html5/thumbnails/14.jpg)
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.
![Page 15: Tecnologias para sistemas distribuidos escalaveis](https://reader033.fdocument.pub/reader033/viewer/2022051015/556253bdd8b42aa02d8b51ea/html5/thumbnails/15.jpg)
• Twitter• Instagram• Digg• Stack Overflow• Flickr• Mercado Livre
![Page 16: Tecnologias para sistemas distribuidos escalaveis](https://reader033.fdocument.pub/reader033/viewer/2022051015/556253bdd8b42aa02d8b51ea/html5/thumbnails/16.jpg)
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)
![Page 17: Tecnologias para sistemas distribuidos escalaveis](https://reader033.fdocument.pub/reader033/viewer/2022051015/556253bdd8b42aa02d8b51ea/html5/thumbnails/17.jpg)
$ redis-cli set mykey "my binary safe value"OK$ redis-cli get mykeymy binary safe value
$ redis-cli set counter 100OK$ redis-cli incr counter(integer) 101$ redis-cli incr counter(integer) 102
![Page 18: Tecnologias para sistemas distribuidos escalaveis](https://reader033.fdocument.pub/reader033/viewer/2022051015/556253bdd8b42aa02d8b51ea/html5/thumbnails/18.jpg)
Use cases
• Auto complete• Message queue• Publish/subscribe• Notification center• Sorting/Ranking• Timeline
![Page 19: Tecnologias para sistemas distribuidos escalaveis](https://reader033.fdocument.pub/reader033/viewer/2022051015/556253bdd8b42aa02d8b51ea/html5/thumbnails/19.jpg)
![Page 20: Tecnologias para sistemas distribuidos escalaveis](https://reader033.fdocument.pub/reader033/viewer/2022051015/556253bdd8b42aa02d8b51ea/html5/thumbnails/20.jpg)
É 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.
![Page 21: Tecnologias para sistemas distribuidos escalaveis](https://reader033.fdocument.pub/reader033/viewer/2022051015/556253bdd8b42aa02d8b51ea/html5/thumbnails/21.jpg)
• 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)
![Page 22: Tecnologias para sistemas distribuidos escalaveis](https://reader033.fdocument.pub/reader033/viewer/2022051015/556253bdd8b42aa02d8b51ea/html5/thumbnails/22.jpg)
• 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)
![Page 23: Tecnologias para sistemas distribuidos escalaveis](https://reader033.fdocument.pub/reader033/viewer/2022051015/556253bdd8b42aa02d8b51ea/html5/thumbnails/23.jpg)
![Page 24: Tecnologias para sistemas distribuidos escalaveis](https://reader033.fdocument.pub/reader033/viewer/2022051015/556253bdd8b42aa02d8b51ea/html5/thumbnails/24.jpg)
![Page 25: Tecnologias para sistemas distribuidos escalaveis](https://reader033.fdocument.pub/reader033/viewer/2022051015/556253bdd8b42aa02d8b51ea/html5/thumbnails/25.jpg)
![Page 26: Tecnologias para sistemas distribuidos escalaveis](https://reader033.fdocument.pub/reader033/viewer/2022051015/556253bdd8b42aa02d8b51ea/html5/thumbnails/26.jpg)
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.
![Page 27: Tecnologias para sistemas distribuidos escalaveis](https://reader033.fdocument.pub/reader033/viewer/2022051015/556253bdd8b42aa02d8b51ea/html5/thumbnails/27.jpg)
Storm Use Cases
• Twitter• Groupon• Rubicon Project• Full Contact• Alibaba• Mercado Livre
![Page 28: Tecnologias para sistemas distribuidos escalaveis](https://reader033.fdocument.pub/reader033/viewer/2022051015/556253bdd8b42aa02d8b51ea/html5/thumbnails/28.jpg)
Storm Architecture
![Page 29: Tecnologias para sistemas distribuidos escalaveis](https://reader033.fdocument.pub/reader033/viewer/2022051015/556253bdd8b42aa02d8b51ea/html5/thumbnails/29.jpg)
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)
![Page 30: Tecnologias para sistemas distribuidos escalaveis](https://reader033.fdocument.pub/reader033/viewer/2022051015/556253bdd8b42aa02d8b51ea/html5/thumbnails/30.jpg)
Storm Topology
![Page 31: Tecnologias para sistemas distribuidos escalaveis](https://reader033.fdocument.pub/reader033/viewer/2022051015/556253bdd8b42aa02d8b51ea/html5/thumbnails/31.jpg)
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"));
![Page 32: Tecnologias para sistemas distribuidos escalaveis](https://reader033.fdocument.pub/reader033/viewer/2022051015/556253bdd8b42aa02d8b51ea/html5/thumbnails/32.jpg)
That’s all, folks!