SlideShare uma empresa Scribd logo
1 de 18
Baixar para ler offline
ESCALANDO SISTEMAS
DISTRIBUÍDOS COM ESTRUTURAS
DE DADOS PROBABILÍSTICAS
Luciano Sabença, Movile
#TDCPOA
● Bacharel com distinção em Ciência da Computação pela
Unicamp.
● Analista de Desenvolvimento Sênior na Movile.
● Trabalha há 6 anos na Movile e há 3 como maior
responsável técnico na área de Messaging.
● Tem interesses na área de Machine Learning, Sistemas
Distribuídos, Teoria da Computação e Sistemas de
alta-performance.
Luciano Sabença
lucianosabenca
Sobre Mim
Nosso Cenário
Qual o Primeiro Passo para o Envio de um SMS?
○ Identificar a Operadora do telefone de destino!
O Telefone foi
Portado?
Sim
Verificar Para
Qual Operadora
o Número foi
portado
Verificar na base
de Intervalos
Pertencentes às
Operadoras
Não
Portabilidade Númerica
~27 milhões (Brasil) + 50 milhões (América Latina)
~ 80 milhões !!!
15%85%
Necessárias:
● Escalabilidade
● Baixo de tempo de inicialização
● Quando um número não está portado:
○ Baixíssima latência
○ Independência de sistemas externos
● Quando um números está portado:
○ Baixa latência
Desejável:
● Atualização online
Características da Solução
Solução: Armazenar TODOS os números portados em memória.
Solução Inicial - V1
Vantagens:
Fácil de implementar.
Acesso aos dados de forma rápida.
Desvantagens:
● Consumo de Memória:
○ 50 milhões * 16 bytes (tamanho de um Long) ≈ 1.3 GB, só
para armazenamento das chaves.
○ 1.3 GB * 2 (approx. load factor do Mapa) ≈ 2.6 GB
● Tempo de Inicialização
○ Cerca de 5 minutos só para carregar todos os números de um
arquivo local
Necessárias:
● Escalável
● Baixo de tempo de inicialização
● Quando um números não está portado:
○ Baixíssima latência
○ Independência de sistemas externos
● Quando um número está portado:
○ Baixa latência
Desejável:
Atualização online
Solução Inicial - V1
● Estruturas de Dados Probabilísticas são:
○ Estruturas que retornam respostas aproximadas, não definitivas
○ Há uma "probabilidade" associada com a resposta estar correta
○ Normalmente apresentam um tradeoff entre uso de memória x
precisão
○ Especialmente úteis para lidar com grandes massas de dados!!
Estruturas de Dados Probabilísticas
○ Count-Min Sketch
○ Skip List
● Alguns Exemplos:
○ Bloom filter
○ HyperLogLog
● Criada por Burton Howard Bloom em 1970 e é uma estrutura de dados
probabilística que responde a pergunta: dada uma chave, ela pode fazer
parte desse conjunto?
● Pode retornar falso-positivo, porém NUNCA retorna um falso-negativo
● Operações Suportada:
○ Inserção
○ Consulta
● Princípio: Encodar a existência de uma chave em N bits
Bloom Filter
Inserção:
1. Gerar o hash da chave a ser adicionada
2. A partir do hash, selecionar os índices que representam aquela chave
3. Coloca como 1 todos os bits nos índices selecionados na etapa 2
Índice 0 1 2 3 4 5 6 7 8 9
Bit 0 0 0 0 0 0 0 0 0 0
Índice 0 1 2 3 4 5 6 7 8 9
Bit 0 1 0 0 0 1 0 0 0 0
Bloom Filter - Inserção
Exemplo:
Chave: Luciano - Hash: 15 - Índices: 1 e 5
Consulta:
1. Gerar o hash da chave a ser consultada
2. A partir do hash, selecionar os índices que representam aquela chave
3. Se todos os bits nos índices estão com o valor 1, retorna verdadeiro.
Senão retorna falso
Índice 0 1 2 3 4 5 6 7 8 9
Bit 0 1 0 0 0 1 0 0 0 0
Exemplo:
Chave: Luciano - Hash: 15 - Índices: 1 e 5 - Valor Retornado: Verdadeiro
Chave: Luciana - Hash: 25 - Índices: 2 e 5 - Valor Retornado: Falso
Bloom Filter - Consulta
Arquitetura da Solução - V2
Necessárias:
● Escalável
● Baixo de tempo de inicialização
● Quando um número não está portado:
○ Baixíssima latência
○ Independência de sistemas externos
● Quando um número está portado:
○ Baixa latência
Desejável:
● Atualização online
Solução Final Com Bloom Filter
Resultados e Conclusões
● O consumo de memória caiu de aproximadamente 2.5GB para 100MB,
por instância
● Economia total de aproximadamente 100GB de Memória RAM
● Criação de um Cluster de recursos compartilhado para todas as
Aplicações
● Tempo de inicialização caiu de cerca de 300s para 15s
Total Redis Positivos Falso-Positivos %Falso-Positivos
318 380 39 847 37 800 2 047 ≈ 5,1
Resultados
● Estruturas de dados são importantes!
○ "I will, in fact, claim that the difference between a bad programmer and
a good one is whether he considers his code or his data structures
more important. Bad programmers worry about the code. Good
programmers worry about data structures and their relationships."
Linus Torvalds
Conclusões
● Existem estruturas de dados com diferentes objetivos e tradeoffs
(e.g. estruturas de dados probabilísticas, CRDTs, persistentes)
● Ao lidar com volumes grandes de dados, muitas vezes é
necessário sacrificar a precisão em troca de um ganho
considerável de recursos.
Obrigado!
@lucianosabenca
luciano-sabenca
luciano.sabenca@movile.com
luciano-sabenca

Mais conteúdo relacionado

Semelhante a TDC2017 | POA Trilha Arquitetura - Escalando sistemas distribuídos com estruturas de dados probabilisticas

apresentação Curso de Python ppt python for all
apresentação Curso de Python ppt python for allapresentação Curso de Python ppt python for all
apresentação Curso de Python ppt python for all
RosibertoGonalves
 

Semelhante a TDC2017 | POA Trilha Arquitetura - Escalando sistemas distribuídos com estruturas de dados probabilisticas (20)

Curso de Python.ppt
Curso de Python.pptCurso de Python.ppt
Curso de Python.ppt
 
apresentação Curso de Python ppt python for all
apresentação Curso de Python ppt python for allapresentação Curso de Python ppt python for all
apresentação Curso de Python ppt python for all
 
Lógica de programação e algoritmos
Lógica de programação e algoritmosLógica de programação e algoritmos
Lógica de programação e algoritmos
 
Unidade 111 estrutura de dados e lógica de programação - com respostas 15-0...
Unidade 111   estrutura de dados e lógica de programação - com respostas 15-0...Unidade 111   estrutura de dados e lógica de programação - com respostas 15-0...
Unidade 111 estrutura de dados e lógica de programação - com respostas 15-0...
 
Unidade 111 estrutura de dados e lógica de programação - com respostas 15-0...
Unidade 111   estrutura de dados e lógica de programação - com respostas 15-0...Unidade 111   estrutura de dados e lógica de programação - com respostas 15-0...
Unidade 111 estrutura de dados e lógica de programação - com respostas 15-0...
 
Unidade 111 estrutura de dados e lógica de programação - com respostas 15-0...
Unidade 111   estrutura de dados e lógica de programação - com respostas 15-0...Unidade 111   estrutura de dados e lógica de programação - com respostas 15-0...
Unidade 111 estrutura de dados e lógica de programação - com respostas 15-0...
 
Unidade 111 estrutura de dados e lógica de programação - com respostas 15-0...
Unidade 111   estrutura de dados e lógica de programação - com respostas 15-0...Unidade 111   estrutura de dados e lógica de programação - com respostas 15-0...
Unidade 111 estrutura de dados e lógica de programação - com respostas 15-0...
 
Como detectar anomalias em dados de streaming? Simplificado (TDC Connections ...
Como detectar anomalias em dados de streaming? Simplificado (TDC Connections ...Como detectar anomalias em dados de streaming? Simplificado (TDC Connections ...
Como detectar anomalias em dados de streaming? Simplificado (TDC Connections ...
 
Meetup Mule SP: Kafka (Edgar)
Meetup Mule SP: Kafka (Edgar)Meetup Mule SP: Kafka (Edgar)
Meetup Mule SP: Kafka (Edgar)
 
Data Science For Dummies From a Dummy
Data Science For Dummies From a DummyData Science For Dummies From a Dummy
Data Science For Dummies From a Dummy
 
TDC2016SP - Trilha Data Science
TDC2016SP - Trilha Data ScienceTDC2016SP - Trilha Data Science
TDC2016SP - Trilha Data Science
 
Dev Parana - Praticas Devops aplicadas a Big Data
Dev Parana - Praticas Devops aplicadas a Big DataDev Parana - Praticas Devops aplicadas a Big Data
Dev Parana - Praticas Devops aplicadas a Big Data
 
Armadilhas no Desenvolvimento de Software
Armadilhas no Desenvolvimento de SoftwareArmadilhas no Desenvolvimento de Software
Armadilhas no Desenvolvimento de Software
 
O que eu deveria saber antes de testar performance?
O que eu deveria saber antes de testar performance?O que eu deveria saber antes de testar performance?
O que eu deveria saber antes de testar performance?
 
Painéis no R Shiny
Painéis no R ShinyPainéis no R Shiny
Painéis no R Shiny
 
Palestra - "Painéis no R Shiny"
Palestra - "Painéis no R Shiny"Palestra - "Painéis no R Shiny"
Palestra - "Painéis no R Shiny"
 
Princípios Básicos para Desenvolvedores
Princípios Básicos para DesenvolvedoresPrincípios Básicos para Desenvolvedores
Princípios Básicos para Desenvolvedores
 
Programação Eficaz - Agile Trends Floripa 2016
Programação Eficaz -  Agile Trends Floripa 2016Programação Eficaz -  Agile Trends Floripa 2016
Programação Eficaz - Agile Trends Floripa 2016
 
Filtro de SPAM
Filtro de SPAMFiltro de SPAM
Filtro de SPAM
 
TDC2018SP | Trilha UX - Desenvolvendo Chatbots com eXtreme Programming
TDC2018SP | Trilha UX - Desenvolvendo Chatbots com eXtreme ProgrammingTDC2018SP | Trilha UX - Desenvolvendo Chatbots com eXtreme Programming
TDC2018SP | Trilha UX - Desenvolvendo Chatbots com eXtreme Programming
 

Mais de tdc-globalcode

Mais de tdc-globalcode (20)

TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidadeTDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
 
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
 
TDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de SucessoTDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de Sucesso
 
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPATDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
 
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVinoTDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
 
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
 
TDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devicesTDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devices
 
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca PublicaTrilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
 
Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#
 
TDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case EasylocusTDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case Easylocus
 
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
 
TDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em GolangTDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em Golang
 
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QATDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
 
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendenciaTDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
 
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR ServiceTDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
 
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NETTDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
 
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
 
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
 
TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#
 
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net CoreTDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core
 

Último

PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
azulassessoria9
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
azulassessoria9
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
LeloIurk1
 
Slide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptxSlide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptx
edelon1
 
Apresentação em Powerpoint do Bioma Catinga.pptx
Apresentação em Powerpoint do Bioma Catinga.pptxApresentação em Powerpoint do Bioma Catinga.pptx
Apresentação em Powerpoint do Bioma Catinga.pptx
LusGlissonGud
 
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdfGEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
RavenaSales1
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
TailsonSantos1
 
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTeoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
TailsonSantos1
 

Último (20)

COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"
 
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaPROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
 
Slide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptxSlide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptx
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.
 
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIAPROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
 
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfPROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
 
Apresentação em Powerpoint do Bioma Catinga.pptx
Apresentação em Powerpoint do Bioma Catinga.pptxApresentação em Powerpoint do Bioma Catinga.pptx
Apresentação em Powerpoint do Bioma Catinga.pptx
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.ppt
 
Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)
 
planejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdfplanejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdf
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
 
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdfGEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
 
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfProjeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
 
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTeoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
 
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfRecomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
 

TDC2017 | POA Trilha Arquitetura - Escalando sistemas distribuídos com estruturas de dados probabilisticas

  • 1. ESCALANDO SISTEMAS DISTRIBUÍDOS COM ESTRUTURAS DE DADOS PROBABILÍSTICAS Luciano Sabença, Movile #TDCPOA
  • 2. ● Bacharel com distinção em Ciência da Computação pela Unicamp. ● Analista de Desenvolvimento Sênior na Movile. ● Trabalha há 6 anos na Movile e há 3 como maior responsável técnico na área de Messaging. ● Tem interesses na área de Machine Learning, Sistemas Distribuídos, Teoria da Computação e Sistemas de alta-performance. Luciano Sabença lucianosabenca Sobre Mim
  • 3.
  • 5. Qual o Primeiro Passo para o Envio de um SMS? ○ Identificar a Operadora do telefone de destino! O Telefone foi Portado? Sim Verificar Para Qual Operadora o Número foi portado Verificar na base de Intervalos Pertencentes às Operadoras Não Portabilidade Númerica ~27 milhões (Brasil) + 50 milhões (América Latina) ~ 80 milhões !!! 15%85%
  • 6. Necessárias: ● Escalabilidade ● Baixo de tempo de inicialização ● Quando um número não está portado: ○ Baixíssima latência ○ Independência de sistemas externos ● Quando um números está portado: ○ Baixa latência Desejável: ● Atualização online Características da Solução
  • 7. Solução: Armazenar TODOS os números portados em memória. Solução Inicial - V1 Vantagens: Fácil de implementar. Acesso aos dados de forma rápida. Desvantagens: ● Consumo de Memória: ○ 50 milhões * 16 bytes (tamanho de um Long) ≈ 1.3 GB, só para armazenamento das chaves. ○ 1.3 GB * 2 (approx. load factor do Mapa) ≈ 2.6 GB ● Tempo de Inicialização ○ Cerca de 5 minutos só para carregar todos os números de um arquivo local
  • 8. Necessárias: ● Escalável ● Baixo de tempo de inicialização ● Quando um números não está portado: ○ Baixíssima latência ○ Independência de sistemas externos ● Quando um número está portado: ○ Baixa latência Desejável: Atualização online Solução Inicial - V1
  • 9. ● Estruturas de Dados Probabilísticas são: ○ Estruturas que retornam respostas aproximadas, não definitivas ○ Há uma "probabilidade" associada com a resposta estar correta ○ Normalmente apresentam um tradeoff entre uso de memória x precisão ○ Especialmente úteis para lidar com grandes massas de dados!! Estruturas de Dados Probabilísticas ○ Count-Min Sketch ○ Skip List ● Alguns Exemplos: ○ Bloom filter ○ HyperLogLog
  • 10. ● Criada por Burton Howard Bloom em 1970 e é uma estrutura de dados probabilística que responde a pergunta: dada uma chave, ela pode fazer parte desse conjunto? ● Pode retornar falso-positivo, porém NUNCA retorna um falso-negativo ● Operações Suportada: ○ Inserção ○ Consulta ● Princípio: Encodar a existência de uma chave em N bits Bloom Filter
  • 11. Inserção: 1. Gerar o hash da chave a ser adicionada 2. A partir do hash, selecionar os índices que representam aquela chave 3. Coloca como 1 todos os bits nos índices selecionados na etapa 2 Índice 0 1 2 3 4 5 6 7 8 9 Bit 0 0 0 0 0 0 0 0 0 0 Índice 0 1 2 3 4 5 6 7 8 9 Bit 0 1 0 0 0 1 0 0 0 0 Bloom Filter - Inserção Exemplo: Chave: Luciano - Hash: 15 - Índices: 1 e 5
  • 12. Consulta: 1. Gerar o hash da chave a ser consultada 2. A partir do hash, selecionar os índices que representam aquela chave 3. Se todos os bits nos índices estão com o valor 1, retorna verdadeiro. Senão retorna falso Índice 0 1 2 3 4 5 6 7 8 9 Bit 0 1 0 0 0 1 0 0 0 0 Exemplo: Chave: Luciano - Hash: 15 - Índices: 1 e 5 - Valor Retornado: Verdadeiro Chave: Luciana - Hash: 25 - Índices: 2 e 5 - Valor Retornado: Falso Bloom Filter - Consulta
  • 14. Necessárias: ● Escalável ● Baixo de tempo de inicialização ● Quando um número não está portado: ○ Baixíssima latência ○ Independência de sistemas externos ● Quando um número está portado: ○ Baixa latência Desejável: ● Atualização online Solução Final Com Bloom Filter
  • 16. ● O consumo de memória caiu de aproximadamente 2.5GB para 100MB, por instância ● Economia total de aproximadamente 100GB de Memória RAM ● Criação de um Cluster de recursos compartilhado para todas as Aplicações ● Tempo de inicialização caiu de cerca de 300s para 15s Total Redis Positivos Falso-Positivos %Falso-Positivos 318 380 39 847 37 800 2 047 ≈ 5,1 Resultados
  • 17. ● Estruturas de dados são importantes! ○ "I will, in fact, claim that the difference between a bad programmer and a good one is whether he considers his code or his data structures more important. Bad programmers worry about the code. Good programmers worry about data structures and their relationships." Linus Torvalds Conclusões ● Existem estruturas de dados com diferentes objetivos e tradeoffs (e.g. estruturas de dados probabilísticas, CRDTs, persistentes) ● Ao lidar com volumes grandes de dados, muitas vezes é necessário sacrificar a precisão em troca de um ganho considerável de recursos.