Escolar Documentos
Profissional Documentos
Cultura Documentos
Distribuída
Flavio Junqueira
Yahoo! Research, Barcelona
INFORUM 2010
Coordenar é importante
INFORUM 2010 2
Coordenar é importante
INFORUM 2010 2
Coordenar é importante
INFORUM 2010 2
Portal da Yahoo!
INFORUM 2010 3
Portal da Yahoo!
Search
Sports
INFORUM 2010 3
Portal da Yahoo!
• Home page:
✓ 38 milhões de usuários por dia (EUA)
✓ 2.5 bilhões de visitas por mês (EUA)
• Search:
✓ +3 bilhões de consultas Web
• Mail:
✓ +90 milhões de usuários
✓ +10 min/visita Fontes: Yahoo! e comScore
INFORUM 2010 4
Infra-estrutura
• Muitos servidores
• Muitos processos
• Grande volume de
dados
• ... engenheiros de
software são meros
mortais
INFORUM 2010 5
Sistemas da Web
INFORUM 2010 6
O que é a coordenação distribuída?
INFORUM 2010 7
Onde se utiliza?
INFORUM 2010 8
Google File System (GFS)
• Cluster GFS
✓ Um mestre
✓ Múltiplos servidores de chunks
INFORUM 2010 9
Google File System (GFS)
• Eleição do mestre
✓ Assegurar que a cada momento existe no máximo um mestre
ativo
INFORUM 2010 10
Bigtable da Google
Família Família
• Tabelas de dados f1 f2
f1:c1 f1:c2 f2:c1 f2:c2 f2:c3
{
✓ Tablet = unidade de Linha 1
distribuição Tablet
Linha 2
Linha 3
✓ Família de colunas = Linha 4
unidade de controle de
acesso
•
{
Linha k
Arquitetura Linha k+1
Tablet
Linha k+2
✓ Um mestre Linha k+3
✓ Servidores de tablets
Timestamps
INFORUM 2010 11
Bigtable da Google
• Eleição do mestre
✓ Assegurar que existe no máximo um mestre ativo
• Metadados
✓ Armazenar o esquema e as listas de controle de acesso (ACLs)
• Encontro (rendezvous)
✓ Descobrir servidor de tablet
• Detecção de falhas
✓ Servidores de tablet disponíveis
INFORUM 2010 12
Crawler da Yahoo!
• Serviço de coleta
Mestre
✓ Páginas da Web
✓ Coleta = copia de documentos Coletor Coletor
• Milhares de servidores
✓ Documentos da Web coletados
concorrentemente
✓ Mestre comanda os coletores
✓ Coletores recolhem documentos
INFORUM 2010 13
Crawler da Yahoo!
• Eleição do mestre
✓ Processo mestre que lidera o grupo
• Detecção de falhas
✓ Coletores disponíveis
INFORUM 2010 14
Katta
✓Coordenação
‣Eleição do mestre
‣Detecção de falhas
‣Avisos, etc.
http://katta.sourceforge.net/
INFORUM 2010 15
Sistemas para coordenação
• Motivação
• Implementação de primitivas de coordenação não
é trivial
✓ Envolve algoritmos distribuídos complexos...
✓ ... complexo no sentido de racionalizar.
INFORUM 2010 16
Sistemas para coordenação
INFORUM 2010 20
Chubby: Design
Célula
Aplicação Chubby Backup Usa Paxos para manter
Cliente Library às replicas consistentes
Mestre
RPCs Propaga atualizações do
estado
Backup
Aplicação Chubby
Backup
Cliente Library
Backup
INFORUM 2010 21
Chubby: Um exemplo
1- Abre “/lock”
2- Obtém lock de“/lock” Célula
Aplicação Chubby 3- Guarda id do mestre
Cliente Library
INFORUM 2010 22
Chubby: Invalidação da Cache
Modificações são bloqueadas
enquanto houver invalidações
Cliente 1
pendentes
Cache
Escreve em “/A”
Célula
Cliente 2
Cliente 2: /A
Cache /A Cliente 3: /A
Invalida “/A”
Cliente 3
Invalida “/A”
Cache /A
INFORUM 2010 23
Chubby: Linearizabilidade
• Operações linearizáveis
✓ Sequenciável + ordem temporal de precedência
INFORUM 2010 24
ZooKeeper
ZooKeeper: Resumo
• Núcleo de coordenação
• Estrutura de znodes em árvore
• Receitas para a implementação de primitivas
• Gestão da cache de clientes delegada
✓ Uso de watches
INFORUM 2010 26
ZooKeeper: Design
Grupo ZK
ZK Seguidor
Cliente Zab para a manutenção
Library da consistência
Líder
Propaga atualizações do
ZK Seguidor estado
Cliente
Library
Seguidor
ZK Seguidor
Cliente
Library
Sessões
INFORUM 2010 27
ZooKeeper: Exemplo
Grupo ZK
Cliente 1 /
Cliente 2
Cliente 3
INFORUM 2010 28
ZooKeeper: Exemplo
Grupo ZK
1- Cria “/lider-”, seq. + eph.
2- Lê “/”
Cliente 1 /
C1 /lider-1
Cliente 2
Cliente 3
INFORUM 2010 28
ZooKeeper: Exemplo
Grupo ZK
1- Cria “/lider-”, seq. + eph.
2- Lê “/”
Cliente 1 /
C1 /lider-1
Cliente 2
INFORUM 2010 28
ZooKeeper: Exemplo
Grupo ZK
1- Cria “/lider-”, seq. + eph.
2- Lê “/”
Cliente 1 /
2- Lê “/”
Cliente 2 C2 /lider-3
INFORUM 2010 28
ZooKeeper: Watches
Grupo ZK
Lê “/foo”, true /
ZK
Cliente
Library Watch
retorna A
A /foo
INFORUM 2010 29
ZooKeeper: Watches
Grupo ZK
/
ZK
Cliente
Library Watch
B /foo
Escreve “/foo”, B
ZK
Cliente
Library
retorna ok
INFORUM 2010 30
ZooKeeper: Watches
Grupo ZK
/
ZK
Cliente
Library notificação
B /foo
Escreve “/foo”, B
ZK
Cliente
Library
retorna ok
INFORUM 2010 31
Watches, Locks, e o Efeito rebanho
• Efeito rebanho
✓ Um elevado número de processos desperta
simultaneamente
• Pico de carga
✓ Altamente indesejável
INFORUM 2010 32
Watches, Locks, e o Efeito rebanho
Grupo ZK
Cliente 1 / Watch
Watch
C1 /lider-1
INFORUM 2010 33
Watches, Locks, e o Efeito rebanho
Grupo ZK
Cliente 1 /
C1 /lider-1
Cliente 2 C2 /lider-3
C3 /lider-2
Cliente 3
INFORUM 2010 34
Watches, Locks, e o Efeito rebanho
Grupo ZK
Cliente 1 /
Cliente 2 C2 /lider-3
C3 /lider-2
Cliente 3
INFORUM 2010 34
Watches, Locks, e o Efeito rebanho
Grupo ZK
Cliente 1 /
notificação
Cliente 2 C2 /lider-3
C3 /lider-2
notificação
Cliente 3
INFORUM 2010 34
Watches, Locks, e o Efeito rebanho
• Solução
✓ Líderes em potencial são ordenados
✓ Cada cliente observa o cliente anterior na sequência
estabelecida
✓ Cada falha aciona uma única notificação
• Desvantagem
✓ Somente um único cliente é notificado de uma
mudança de líder
INFORUM 2010 35
Chubby x ZooKeeper
Chubby ZooKeeper
INFORUM 2010 36
Linearizabilidade: Quão importante é?
• Depende...
• ZooKeeper implementa um objeto
universal
✓ Objeto universal: Herlihy [Herlihy ACM TPLS
1991]
✓ Implementa consenso para n processos
INFORUM 2010 37
Implementando consenso
• Cada processo
✓ Propõe(v)
➡ Escreve v com flag sequencial
✓ Decide
➡ Lendo todos os znodes filhos
➡ Selecionando o valor v’com menor número de sequencia
➡ Retornando v’
INFORUM 2010 38
Linearizabilidade: Quão importante é?
• Depende...
• ZooKeeper implementa um objeto
universal segundo Herlihy [Herlihy ACM TPLS
1991]
✓ Implementa consenso para n processos
INFORUM 2010 39
Linearizabilidade: Quão importante é?
Grupo ZK
• Exemplo
/
ZK
Cliente C1 /Config
Library
/
C2 /Config
/
ZK Escreve “/Config”, C2
Cliente
Library C2 /Config
retorna ok
INFORUM 2010 40
Linearizabilidade: Quão importante é?
Grupo ZK
• Exemplo
/
ZK
Cliente C1 /Config
Library
/
/
ZK
Cliente
Library C2 /Config
INFORUM 2010 41
Linearizabilidade: Quão importante é?
Grupo ZK
• Exemplo
/
ZK Lê “/Config”
Cliente C1 /Config
Library
retorna C1 /
C2 /Config
/
ZK
Cliente
Library C2 /Config
INFORUM 2010 42
Da cartola ...
• sync()
✓ Operação asíncrona
✓ Descarga o canal entre o seguidor e o líder
✓ Transforma operações em linearizáveis
✓ Menos custoso que executar broadcast atômico
INFORUM 2010 43
Avaliação & Experiência
Avaliação
• Cluster de 50 servidores
• Xeon dual-core 2.1 GHz
• 4 GB de RAM
• Dois discos SATA
INFORUM 2010 45
Vazão (throughput)
50000 50000
40000 40000
30000 30000
20000 20000
10000 10000
0 0
0 20 40 60 80 100 0 20 40 60 80 100
Percentage of read requests Percentage of read requests
INFORUM 2010 46
Latência
INFORUM 2010 47
Carga em produção
2000
Leitura
1500
Número de operações
• Carga de um servidor
1000
• Picos de leitura de
mais de 2000 ops/s 500
•Picos de escrita de
menos de 500 ops/s
0
0h 6h 12h 18h 24h 30h 36h 42h 48h 54h 60h 66h
Tempo em segundos
INFORUM 2010 48
Em Yahoo!...
• Bugzilla
✓ Sistema de tickets para defeitos de software,
melhorias, etc
INFORUM 2010 50
Faltas na prática
• Configuração: 5 problemas
Series 1
✓ System configuration, not ZK 6
0
✓ Nossa culpa... =\ Misconfig. App. Bugs ZK bugs
INFORUM 2010 51
Fechamento
Resumo
• Coordenação
• Chubby
• ZooKeeper
• Experiência
INFORUM 2010 53
Créditos
INFORUM 2010 54