Você está na página 1de 62

Coordenação

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

Mail

Sports

Finance Weather News

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

• Alta complexidade dos


sistemas de software

• ... engenheiros de
software são meros
mortais
INFORUM 2010 5
Sistemas da Web

• Sistemas que requerem coordenação


✓ Em geral
➡ Grandes conjuntos de dados em servidores convencionais
✓ Exemplos
➡ Sistemas de arquivos distribuídos
➡ Sistemas para o processamento de grandes volumes de dados

INFORUM 2010 6
O que é a coordenação distribuída?

• Técnicas para coordenação de processos


✓ Metadados (configuração)
✓ Eleição de líder
✓ Locks distribuídos, barreiras, filas

INFORUM 2010 7
Onde se utiliza?

• Sistemas de arquivo distribuídos: HDFS, GFS


• Sistemas de armazenamento: Bigtable, HBase
• Motores de busca: Crawling, Índice

INFORUM 2010 8
Google File System (GFS)

• Sistema de arquivos escalável

• Aplicações com uso intensivo de dados

• 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

• Designação de trabalho (configuração)


✓ Páginas a coletar, politeness, etc.

• 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.

• Não é o principal objetivo de muitos projetos


✓ Frequentemente mal desenhados ou implementados
✓ Duplicação

INFORUM 2010 16
Sistemas para coordenação

• Chubby, Google [USENIX OSDI 2006]


✓ Serviço de locks

• Centrifuge, Microsoft [USENIX NSDI 2010]


✓ Serviço de leases

• ZooKeeper, Yahoo! [Hunt et al. USENIX ATC 2010]


✓ Núcleo para coordenação
✓ Código aberto (Apache, desde 2008)
INFORUM 2010 17
Sistemas para coordenação

• Chubby, Google [USENIX OSDI 2006]


✓ Serviço de locks

• Centrifuge, Microsoft [USENIX NSDI 2010]


✓ Serviço de leases

• ZooKeeper, Yahoo! [Hunt et al. USENIX ATC 2010]


✓ Núcleo para coordenação
✓ Código aberto (Apache, desde 2008)
INFORUM 2010 18
Chubby
Chubby: Resumo

• API semelhante a de um sistema de arquivos


• Arquivos de dados estruturados em árvore
• Locks
• Operações para abrir e fechar arquivos
• Invalidação da cache do cliente
• Operações linearizáveis

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

• Para eleger a um mestre

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

• Mestre de uma célula


✓ Inicia todas as operações
✓ Processa a todas as operações em ordem
✓ Paxos: uma única proposta pendente por vez

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

• Não há operações para abrir e fechar znodes


• Escritas são linearizáveis

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

1- Cria “/lider-”, seq. + eph. C3 /lider-2


2- Lê “/”
Cliente 3

INFORUM 2010 28
ZooKeeper: Exemplo
Grupo ZK
1- Cria “/lider-”, seq. + eph.
2- Lê “/”
Cliente 1 /

1- Cria “/lider-”, seq. + eph.


C1 /lider-1

2- Lê “/”
Cliente 2 C2 /lider-3

1- Cria “/lider-”, seq. + eph. C3 /lider-2


2- Lê “/”
Cliente 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

Existe “/lider-1”, true


Cliente 2 C2 /lider-3
retorna ok
C3 /lider-2
Existe “/lider-1”, true
Cliente 3
retorna ok

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

Cache do cliente Invalidação direta Watches

Primitivas Locks Núcleo (receitas)

Consistência Todas as operações Somente escritas


são linearizáveis são linearizáveis
Escalabilidade Não Maioritariamente
leituras
Performance Baixa Alta

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

• Visível através de canais escondidos

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
/

Leia nova configuração! C2 /Config

/
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)

Throughput of saturated system


Throughput of saturated system (all requests to leader)
90000
90000
3 servers 3 servers
80000 5 servers 5 servers
80000 7 servers
7 servers
9 servers 9 servers
70000 70000 13 servers
13 servers
Operations per second

Operations per second


60000 60000

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

• Serviço de coleta Escrita

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!...

• Se encontra em uso para:


✓ Cross-colo locks
✓ Web crawling
✓ Large-scale publish-subscribe (Hedwig: ZOOKEEPER-775)
✓ Portal front-end

• Maior cluster do qual eu tenho conhecimento


✓ Aproximadamente 5,000 nodes
INFORUM 2010 49
Faltas na prática

• Bugzilla
✓ Sistema de tickets para defeitos de software,
melhorias, etc

• Fila do serviço de coleta


✓ Mais de 2 anos em produção
✓ 9 tickets reportando problemas relacionados ao
ZooKeeper

INFORUM 2010 50
Faltas na prática

• Configuração: 5 problemas
Series 1
✓ System configuration, not ZK 6

✓ E.g., misconfigured net cards, DNS clash 5

• Bugs da aplicação: 2 problemas 4

✓ Misunderstanding of the API semantics 3

✓ E.g., race condition using async api 2

• Bugs do ZK: 2 problemas 1

0
✓ Nossa culpa... =\ Misconfig. App. Bugs ZK bugs

✓ API e servidor (todos afetados)

INFORUM 2010 51
Fechamento
Resumo

• Coordenação
• Chubby
• ZooKeeper
• Experiência

INFORUM 2010 53
Créditos

• Patrick Hunt, Cloudera


• Mahadev Konar, Yahoo! Grid
• Benjamin Reed, Yahoo! Research
• Henry Robinson, Cloudera
• The ZooKeeper community

INFORUM 2010 54

Você também pode gostar