Tecnologias para sistemas distribuidos escalaveis
-
Upload
cesar-schneider -
Category
Technology
-
view
171 -
download
0
description
Transcript of Tecnologias para sistemas distribuidos escalaveis
![Page 1: Tecnologias para sistemas distribuidos escalaveis](https://reader035.fdocuments.net/reader035/viewer/2022081401/559b63f01a28ab05258b4653/html5/thumbnails/1.jpg)
Tecnologiasparasistemasdistribuídos
escaláveis
MongoDB, Redis, Hadoop, Storm
Cesar Schneider
Eworks Tecnologia
![Page 2: Tecnologias para sistemas distribuidos escalaveis](https://reader035.fdocuments.net/reader035/viewer/2022081401/559b63f01a28ab05258b4653/html5/thumbnails/2.jpg)
Quemsoueu
• Inventor desde 1988
• Programadordesde 1998
• Analistadesde 2003
• Gerente/Consultordesde 2008
• “Canivetesuiço”desde 2010
• “Hacker” desde 2012
• Arquiteto/Designer desde 2013
![Page 3: Tecnologias para sistemas distribuidos escalaveis](https://reader035.fdocuments.net/reader035/viewer/2022081401/559b63f01a28ab05258b4653/html5/thumbnails/3.jpg)
O quejáaprendievivi
• C/C++, PHP, Java, Ruby, JavaScript, HTML, CSS, Action Script, Bash, Linux.
• Trabalheiemdiferentesprojetos no Brasil, EmiradosÁrabes, Chile eUSA.
• Experiência com osmercados de gerenciamento de risco, rastreamento de veículos, geolocalização, GIS, e-commerce, aplicaçõesmóveis, integração de sistemas, Web Services eadministração de servidores Linux.
• Apaixonadoporesportesradicais, músicaeletrônicaeautomobilismo.
![Page 4: Tecnologias para sistemas distribuidos escalaveis](https://reader035.fdocuments.net/reader035/viewer/2022081401/559b63f01a28ab05258b4653/html5/thumbnails/4.jpg)
ComputaçãoDistribuída
• É umareferênciaàcomputaçãoparalelaedescentralizada, realizadapordoisoumaiscomputadoresconectadosatravés de umarede, cujoobjetivoéconcluirumatarefaemcomum.
• Umacoleção de computadoresindependentesqueaparecemparaousuáriocomo um únicosistema.
![Page 5: Tecnologias para sistemas distribuidos escalaveis](https://reader035.fdocuments.net/reader035/viewer/2022081401/559b63f01a28ab05258b4653/html5/thumbnails/5.jpg)
ComputaçãoDistribuída
![Page 6: Tecnologias para sistemas distribuidos escalaveis](https://reader035.fdocuments.net/reader035/viewer/2022081401/559b63f01a28ab05258b4653/html5/thumbnails/6.jpg)
SistemasEscaláveis
• Um sistemaédescritocomoescalável se permaneceeficientequandohá um aumentosignificativo no número de recursos(dados) e no número de usuários
• São construídos com base numaarquiteturadistribuídaequepermiteadição de novosnóssemque a aplicaçãonecessiteser modificada
![Page 7: Tecnologias para sistemas distribuidos escalaveis](https://reader035.fdocuments.net/reader035/viewer/2022081401/559b63f01a28ab05258b4653/html5/thumbnails/7.jpg)
ArquiteturaEscalável
![Page 8: Tecnologias para sistemas distribuidos escalaveis](https://reader035.fdocuments.net/reader035/viewer/2022081401/559b63f01a28ab05258b4653/html5/thumbnails/8.jpg)
Tecnologiasescaláveis
• MongoDB: banco de dados orientadoàdocumentosou“NoSQL”
• Redis: armazenamento de dados emmemóriaRAM com replicaçãoem disco
• Hadoop: processamento de grandes volumes de dados usando Map/Reduce eoutrosalgoritmos
• Storm: processamento de dados em tempo real através de topologiasbaseadasemgrafos
![Page 9: Tecnologias para sistemas distribuidos escalaveis](https://reader035.fdocuments.net/reader035/viewer/2022081401/559b63f01a28ab05258b4653/html5/thumbnails/9.jpg)
Banco de dados orientado a documentoquepermitearmazenarestruturas de
dados com alta performance, disponibilidade,escalabilidadeeesquemasflexívei
s.
Um banco de dados possuiváriascoleções(tabelas). Umacoleçãopossuiváriosdocumentos
(registro). Um documentopossuivários pares chave/valor.
![Page 10: Tecnologias para sistemas distribuidos escalaveis](https://reader035.fdocuments.net/reader035/viewer/2022081401/559b63f01a28ab05258b4653/html5/thumbnails/10.jpg)
• Flexibilidade: dados armazenados no formatoJSON
• Velocidade: consultassãomaisrápidasporquenãoexistem“joins”
• Escalabilidade: capacidade de cargapode ser aumentadafacilmenteusando“shards”
• Recursos: indices geoespaciais, queries dinâmicas, ordenação, agregação, replicação
![Page 11: Tecnologias para sistemas distribuidos escalaveis](https://reader035.fdocuments.net/reader035/viewer/2022081401/559b63f01a28ab05258b4653/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://reader035.fdocuments.net/reader035/viewer/2022081401/559b63f01a28ab05258b4653/html5/thumbnails/12.jpg)
Relacional Documento
Escalonamento Possívelporémcomplexodevido a arquitetura
Principalvantagemporterum arquiteturaflexívelesemesquemadefinido
Consistência Ponto forte. Estruturarígidagarante a consistência dos dados
Eventual, masgaranteacessoaoúltimovalor atualizado
Disponibilidade Podenãosuportarumagrandedemanda de dados
Fatorfundamental.Algograu de distribuiçãopermitemaiornúmero de consultas
![Page 13: Tecnologias para sistemas distribuidos escalaveis](https://reader035.fdocuments.net/reader035/viewer/2022081401/559b63f01a28ab05258b4653/html5/thumbnails/13.jpg)
![Page 14: Tecnologias para sistemas distribuidos escalaveis](https://reader035.fdocuments.net/reader035/viewer/2022081401/559b63f01a28ab05258b4653/html5/thumbnails/14.jpg)
Servidor de estruturasda dados complexas, armazenadasemmemória RAM, quepermitem a execução de operaçõescomplexasemanipulação
de dados com baixalatência.
Possibilita a execução de operaçõesatômicascomoconcatenar strings,
incrementarcontadores, ordenarlistas, computarinterseções, uniõesediferenças.
![Page 15: Tecnologias para sistemas distribuidos escalaveis](https://reader035.fdocuments.net/reader035/viewer/2022081401/559b63f01a28ab05258b4653/html5/thumbnails/15.jpg)
• Digg
• Stack Overflow
• Flickr
• Mercado Livre
![Page 16: Tecnologias para sistemas distribuidos escalaveis](https://reader035.fdocuments.net/reader035/viewer/2022081401/559b63f01a28ab05258b4653/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 (cadaelementopossui um score)
![Page 17: Tecnologias para sistemas distribuidos escalaveis](https://reader035.fdocuments.net/reader035/viewer/2022081401/559b63f01a28ab05258b4653/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-cliincr counter(integer) 101$ redis-cliincr counter(integer) 102
![Page 18: Tecnologias para sistemas distribuidos escalaveis](https://reader035.fdocuments.net/reader035/viewer/2022081401/559b63f01a28ab05258b4653/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://reader035.fdocuments.net/reader035/viewer/2022081401/559b63f01a28ab05258b4653/html5/thumbnails/19.jpg)
![Page 20: Tecnologias para sistemas distribuidos escalaveis](https://reader035.fdocuments.net/reader035/viewer/2022081401/559b63f01a28ab05258b4653/html5/thumbnails/20.jpg)
É framework mantidopela Apache Foundation quepermiteprocessamentode grandes volumes de dados distribuídosem um cluster quepodeconteralgumasdezenasoumilhares de nós, ondecadanósexecutaearmazena dados de localmente.
Aoinvés de utilizarhardwarescarose com altadisponibilidade, épossívelmontar um cluster Hadoop com qualquertipo de máquinaporquefoidesenhado com estafinalidade.
![Page 21: Tecnologias para sistemas distribuidos escalaveis](https://reader035.fdocuments.net/reader035/viewer/2022081401/559b63f01a28ab05258b4653/html5/thumbnails/21.jpg)
• Hadoop Common• Hadoop Distributed File System (HDFS)• Hadoop YARN (job scheduling and cluster resource management)• HadoopMapReduce (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çãoparaaplicaçõesdistribuídas)
![Page 22: Tecnologias para sistemas distribuidos escalaveis](https://reader035.fdocuments.net/reader035/viewer/2022081401/559b63f01a28ab05258b4653/html5/thumbnails/22.jpg)
• Indexação de busca de produtos (Amazon)
• Sistema de recomendação (Netflix)
• Analise de logs erelatóriosanalíticos (Facebook)
• Analise de metadados de arquivos de audio (last.fm)
• Pessoasquetalvezvocêconheça (LinkedIn)
• Previsão de resultados (Obama)
![Page 23: Tecnologias para sistemas distribuidos escalaveis](https://reader035.fdocuments.net/reader035/viewer/2022081401/559b63f01a28ab05258b4653/html5/thumbnails/23.jpg)
![Page 24: Tecnologias para sistemas distribuidos escalaveis](https://reader035.fdocuments.net/reader035/viewer/2022081401/559b63f01a28ab05258b4653/html5/thumbnails/24.jpg)
![Page 25: Tecnologias para sistemas distribuidos escalaveis](https://reader035.fdocuments.net/reader035/viewer/2022081401/559b63f01a28ab05258b4653/html5/thumbnails/25.jpg)
![Page 26: Tecnologias para sistemas distribuidos escalaveis](https://reader035.fdocuments.net/reader035/viewer/2022081401/559b63f01a28ab05258b4653/html5/thumbnails/26.jpg)
Storm
Sistemadistribuído de processamento de dados em tempo real a partir de “streams” de dados.
Umatopologia Storm consume “streams” de dados
realizandoprocessamentoscomplexosdestasinformações, reparticionandoestes dados
emdiversarfases de processamento de acordocom a necessidade do resultado final.
![Page 27: Tecnologias para sistemas distribuidos escalaveis](https://reader035.fdocuments.net/reader035/viewer/2022081401/559b63f01a28ab05258b4653/html5/thumbnails/27.jpg)
Storm Use Cases
• Groupon
• Rubicon Project
• Full Contact
• Alibaba
• Mercado Livre
![Page 28: Tecnologias para sistemas distribuidos escalaveis](https://reader035.fdocuments.net/reader035/viewer/2022081401/559b63f01a28ab05258b4653/html5/thumbnails/28.jpg)
Storm Architecture
![Page 29: Tecnologias para sistemas distribuidos escalaveis](https://reader035.fdocuments.net/reader035/viewer/2022081401/559b63f01a28ab05258b4653/html5/thumbnails/29.jpg)
Storm Concepts
• Topologies (grafos de transformações de dados compostopornósquepodem ser “spouts” ou “bolts”)
• Streams (compostosporfontes de dados eprocessadores de dados)
• Data Models (definição dos camposetipos de dados do resultado final)
![Page 30: Tecnologias para sistemas distribuidos escalaveis](https://reader035.fdocuments.net/reader035/viewer/2022081401/559b63f01a28ab05258b4653/html5/thumbnails/30.jpg)
Storm Topology
![Page 31: Tecnologias para sistemas distribuidos escalaveis](https://reader035.fdocuments.net/reader035/viewer/2022081401/559b63f01a28ab05258b4653/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://reader035.fdocuments.net/reader035/viewer/2022081401/559b63f01a28ab05258b4653/html5/thumbnails/32.jpg)
That’s all, folks!