Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

5 - Coordenação
eduardo@dca.ufrn.br
2
No último 
Capítulo
1. Fundamentos
○ Modelo OSI
○ Middleware
○ Tipos de Comunicação
2. RPC
3. Comunicação Orientada à 
Mensagens
4. Comunicação Multicast
Neste Capítulo
1. Sincronização de Relógios
2. Relógios Lógicos
3. Relógios Vetoriais
4. Exclusão Mútua
5. Eleição de Líder
3
Sincronização de 
Relógios
4
Motivação
Sincronização de Relógios
● Relógios são essenciais em computação
○ Medir o tempo
○ Identificar ordem de eventos
■ transações em BD (mercado financeiro)
■ ordem de posts/mensagens em rede social 
● Em sistemas centralizados, o tempo é claro e único: uma chamada ao 
sistema retorna uma hora sempre igual ou crescente. 
● Em sistemas distribuídos, manter esse acordo é um grande desafio.
5
Sincronização de Relógios
● make
○ Usado para compilar apenas os arquivos alterados, com base nas marcas de tempo dos 
arquivos-fonte e objetos.
○ Compara os tempos de modificação dos arquivos: se o código-fonte é mais recente que o 
objeto, recompila; se não, ignora.
○ Em sistemas distribuídos, se os relógios não estão sincronizados, pode ocorrer que um 
arquivo-fonte alterado pareça ser mais antigo que o objeto, o que impede a recompilação 
necessária e gera executáveis incorretos.
6
É possível sincronizar todos os relógios de 
um Sistema Distribuído?
7
Relógios Físicos em Computadores
8
● 🕒 Temporizadores Internos (Cristais de Quartzo):
○ Computadores não têm relógios no sentido tradicional, mas sim temporizadores baseados em 
cristais de quartzo que vibram a frequências bem definidas.
○ Cada cristal está associado a um contador. A cada oscilação, o contador é decrementado. Ao 
chegar a zero, uma interrupção é gerada e o contador é recarregado — isso define o "tick" do 
relógio.
○ Ao iniciar o sistema, o tempo atual é configurado pelo usuário e armazenado na memória. A 
cada tick, o tempo armazenado é incrementado, mantendo o relógio de software atualizado.
● ✔ Em Computadores Isolados:
○ Pequenos desvios no relógio não causam problemas, pois todos os processos usam o 
mesmo tempo relativo.
Relógios Físicos 
9
● ⚠ Clock Skew:
○ Quando há múltiplos computadores, cada um com seu próprio cristal, os relógios 
inevitavelmente se dessincronizam com o tempo — esse desvio é chamado clock skew.
○ Com clock skew, programas que dependem de timestamps corretos entre máquinas podem 
falhar, como no exemplo do make.
● ⏱ Necessidade de Relógios Externos:
○ Em sistemas que exigem tempo real, o uso de relógios físicos externos é necessário. Mas 
isso traz dois problemas: como sincronizá-los com o mundo real, e entre si.
○ A referência global usada é o UTC 🌍 (Tempo Universal Coordenado), transmitido por rádios 
e satélites com precisões variadas, indo de milissegundos a dezenas de nanossegundos.
Algoritmos de Sincronização de Relógios
10
● Se uma máquina tem acesso ao UTC, o objetivo é sincronizar as outras com 
ela. Se nenhuma tem, tenta-se manter todas próximas entre si. Há muitos 
algoritmos propostos para isso.
● Todos os relógios se baseiam em osciladores harmônicos. Os mais precisos 
são os atômicos (baseados em césio-133); os comuns usam quartzo, que é 
estável, mas menos preciso.
Algoritmos de Sincronização de Relógios
11
● Ideia geral
○ O relógio de software é derivado do relógio de hardware: a cada interrupção gerada pelo 
temporizador (ex. 100 vezes por segundo), incrementa-se um contador.
○ Chamamos esse contador de Cₚ(t), o valor do relógio de software da máquina p no tempo t. 
○ O objetivo da sincronização é manter a diferença entre os relógios de qualquer par de 
máquinas menor que um limite π (precisão)
■ ∀t, ∀p, q: |Cp(t) − Cq(t)| ≤ π
○ Se o objetivo for manter a proximidade com o UTC, falamos de acurácia (α):
■ ∀t, ∀p: |Cₚ(t) − t| ≤ α
○ Se todos os relógios são precisos (internamente sincronizados), então são acurados dentro 
do dobro do erro permitido: π = 2α. Mas a precisão interna não garante acurácia em relação 
ao UTC.
○ Idealmente, todos os relógios mostrariam Cp(t) = t sempre, com α = π = 0. Mas, na prática, 
todos sofrem clock drift, ou seja, oscilações causadas por variações ambientais e 
imperfeições do cristal.
Algoritmos de Sincronização de Relógios
12
● O erro relativo aproximado dos temporizadores baseado em quartzo é 
10-6 segundos por segundo, ou 31.5 segundos por ano
Network Time Protocol
13
NTP
1ª abordagem para sincronização
Network Time Protocol
14
● Um método comum de 
sincronização é o cliente consultar 
um servidor de tempo (com UTC 
ou relógio preciso). 
● O desafio está em estimar o atraso 
da mensagem para corrigir o tempo 
de forma útil.
Network Time Protocol
15
● Funcionamento
1. Máquina cliente envia mensagem para o 
servidor de tempo perguntando pela 
hora atual
2. Servidor de tempo responde o mais 
rápido possível, com uma mensagem 
contendo a hora atual CUTC
3. O Cliente obtém uma resposta e ajusta 
seu relógio
● Problemas?
Network Time Protocol
16
● Funcionamento
1. Máquina cliente envia mensagem para o 
servidor de tempo perguntando pela 
hora atual
2. Servidor de tempo responde o mais 
rápido possível, com uma mensagem 
contendo a hora atual CUTC
3. O Cliente obtém uma resposta e ajusta 
seu relógio
● Problemas?
○ Atraso no envio das mensagens
○ O tempo pode retroceder abruptamente causando 
inconsistências
Problemas
17
1. Atraso no envio das mensagens
a. Solução: ajustar relógio considerando estimativa de 
atraso
i. Resultado pode ser melhorado usando histórico de 
média de atrasos
Problemas
18
1. Atraso no envio das mensagens
a. Solução: ajustar relógio considerando estimativa de 
atraso
i. Resultado pode ser melhorado usando histórico de 
média de atrasos
2. O tempo pode retroceder abruptamente 
causando inconsistências
a. Solução: corrigir a hora mudando o tempo 
gradativamente
i. Ex: se cada interrupção da máquina adiciona 10ms 
ao relógio 
1. Cliente pode somar 9ms por tick (em vez de 
10ms) para atrasar
2. Cliente pode somar 11ms por tick (em vez de 
10ms) para adiantar
19
latência latência
processamento
tempo total
NTP
1. Calcular a latência: 
tempo para transmissão 
de mensagem
2. Calcular o atraso de 
relógio
● Toda mensagem deve carregar o timestamp do remetente
○ Timestamp segundo o relógio local de cada máquina
○ Servidor envia timestamps x e y para Cliente
● Simplificação: as latências de ida e volta são iguais
● Cuidado: lembre-se que servidores tem relógios diferentes
○ Latência = [(x - a) + (b - y)] / 2 ⇒ incorreto
● Latência = tempo total - tempo de processamento
○ Latência = [(b - a) - (y - x)] / 2
20
● Atraso de relógio (Θ) ⇒ diferença entre relógios do cliente e do servidor
○ Ida: cliente envia em a, servidor recebe em x, atraso de relógio Θ
■ O relógio do cliente está atrasado por Θ
■ x = a + latência + Θ ⇒ Θ = x - a - latência
○ Volta: servidor envia em y, cliente recebe em b, Θ
■ O relógio do cliente está atrasado por Θ
■ b = y + latência - Θ ⇒ Θ = y - b + latência
○ 2Θ = x - a - latência + y - b + latência
○ Θ = (x - a + y - b) / 2 
NTP
1. Calcular a latência: 
tempo para transmissão 
de mensagem
2. Calcular o atraso de 
relógio
latência latência
tempo total
Θ
Simplificação todo o atraso ocorreu 
no envio do cliente para o servidor
21
● Latência = [(b - a) - (y - x)] / 2
○ Latência = [(18-9) - (9-4)]/2 
○ Latência = (9-5)/2 = 2
● Atraso de relógio: Θ = (x - a + y - b) / 2
○ Θ = (4 - 9 + 9 - 18) / 2 
○ Θ = (4 - 18) / 2 = -7
● Servidor está “7 segundos” atrasado em relação ao cliente
● Logo, o cliente precisa diminuir sua frequência até atrasar um total de 7 
segundos
NTP
1. Calcular a latência: 
tempo para transmissão 
de mensagem
2. Calcular o atraso de 
relógio
tempo total
1 2 3 4 5 6 7 8 9 10 11
 8 9 10 11 12 13 14 15 16 17 18 19
latência latência
Network Time Protocol
22
Nem todos os relógios são igualmente confiáveis.
➡ Um servidor não deve ajustar seu tempo com 
base em um relógio menos confiável.🔁 Regra de ajuste:
● Um nó só ajusta seu relógio se seu stratum 
for maior que o do servidor consultado.
● Após ajuste, o cliente assume stratum = 
servidor + 1.
Stratum O que representa
0 Não é um servidor NTP, mas sim um 
relógio de referência (ex: GPS, relógio 
atômico). Ele não fala NTP diretamente.
1 Um servidor NTP diretamente conectado 
a um stratum-0 (ou seja, ele tem acesso 
a UTC, GPS, etc.). É o servidor NTP 
mais confiável.
2+ Servidores sincronizados com servidores 
de nível mais baixo.
... Cada sincronização adiciona +1
🏷 Níveis de confiança (stratum):
Relógios Lógicos
23
A ordem dos fatores altera o resultado!
Relógios Lógicos
● Proposto por Leslie Lamport
● Objetivo: estabelecer a ordem de eventos 
independentemente da hora real
● Embora a sincronização de relógios seja 
possível, não precisa ser absoluta:
○ É necessário sincronizar processos que não interagem 
entre si? Não!
24
Relógios Lógicos de Lamport
● Relação acontece antes
○ Se a e b são eventos do mesmo processo e a acontece antes de b, então: a → b
○ Se a é o envio de uma mensagem e b é o seu recebimento, então: a → b 
○ Se a → b, e b → c, então a → c (propriedade transitiva)
○ Se x e y acontecem em processos diferentes que não trocam mensagens, então x → y e y → 
x são falsas!
■ Esses processos são ditos concorrentes
○ Tempos são medidos em função: se a → b, C(a)que os relógios lógicos sejam ajustados!
● A relação acontece-antes só pode ser 
estabelecida para eventos ligados pelo 
envio de mensagens (ou eventos que 
ocorrem no mesmo nó)
○ Relógios lógicos não mantêm o histórico de 
interações
Relógios Lógicos
46
P3 não tem como 
relacionar seu 
relógio com o de P1
● Gerar a ordem total exige comunicação 
frequente e impõe restrições sobre o que 
se pode executar em cada instante
○ Mas, quando há interação é essencial manter 
a ordem (relação causal)
○ Eventos não relacionados podem ser tratados 
em qualquer ordem
Ordem total x ordem causal
47
Relógios Lógicos 
Vetoriais
48
Relógios Lógicos Vetoriais
49
● Tenta solucionar problemas de causalidade apresentados nos relógios de 
Lamport através do uso de relógios vetoriais
● Cada nó mantém um vetor de contadores com sua visão mais recente do 
relógio de cada outro nó
● Cada processo Pi mantém um vetori com as seguintes propriedades:
1. Quando Pi executa, vetori[i] é incrementado
2. Quando Pi envia uma mensagem, ele inclui nela vetori
3. Quando Pi recebe uma mensagem de Pj:
a. atualiza seu vetor: vetori[k] = max(vetori[k], msgj[k]), ∀k≠i
b. incrementa vetori[k]
Relógios Lógicos Vetoriais
50
● vetori[k] indica quantos eventos i sabe que aconteceram em k
○ São os eventos de Pk que já alcançaram i (relação causal)
A
A:0
B:0
C:0
B
A:0
B:0
C:0
C
A:0
B:0
C:0
A:0
B:0
C:1
A:0
B:1
C:1
A:0
B:2
C:1
A:1
B:2
C:1
A:0
B:0
C:2
A:2
B:2
C:2
A:3
B:2
C:2
A:3
B:3
C:2
A:3
B:4
C:3
A:3
B:4
C:2
1. Quando Pi executa, vetori[i] é incrementado
2. Quando Pi envia uma mensagem, ele inclui nela vetori
3. Quando Pi recebe uma mensagem de Pj:
a. atualiza seu vetor: vetori[k] = max(vetori[k], msgj[k]), 
∀k≠i
b. incrementa vetori[k]
Relógios Lógicos Vetoriais
51
● Ao se comparar dois eventos a e b, compara-se todos os valores contidos 
em seus timestamps
○ Se todos os valores de a são menores ou iguais aos respectivos valores de b, a precede b
■ a causou b, ou seja, b é um efeito de a
○ Se alguns valores são maiores e outros menores ou iguais, não se pode ordenar os dois 
eventos
■ não existe relação causal entre a e b
Relógios Lógicos Vetoriais
52
A
A:0
B:0
C:0
B
A:0
B:0
C:0
C
A:0
B:0
C:0
A:0
B:0
C:1
A:0
B:1
C:1
A:0
B:2
C:1
A:1
B:2
C:1
A:0
B:3
C:1
A:0
B:3
C:2
A:2
B:2
C:1
A:2
B:4
C:1
A:0
B:3
C:3
A:3
B:3
C:3
A:2
B:5
C:1
A:2
B:5
C:4
A:2
B:5
C:5
A:4
B:5
C:5
Relógios Lógicos Vetoriais
53
A
A:0
B:0
C:0
B
A:0
B:0
C:0
C
A:0
B:0
C:0
A:0
B:0
C:1
A:0
B:1
C:1
A:0
B:2
C:1
A:1
B:2
C:1
A:0
B:3
C:1
A:0
B:3
C:2
A:2
B:2
C:1
A:2
B:4
C:1
A:0
B:3
C:3
A:3
B:3
C:3
A:2
B:5
C:1
A:2
B:5
C:4
A:2
B:5
C:5
A:4
B:5
C:5
Causas
Efeitos
independentes
independente
Multicasting com ordenação causal
54
● Todas as mensagens são enviadas por multicast
○ O valor de vetori[i] só é incrementado no envio de mensagens
○ Uma mensagem m de Pi é mantida na fila de entrega de Pj até que
■ tsm[i] = vetorj[i] + 1
● a msg é a próxima que Pj espera de Pi
● Ex: se a última mensagem que Pj viu de Pi foi 3, então Pj não pode entregar a 
mensagem 5 para a aplicação
■ ∀k≠i, tsm[k]a ficha circulará bastante, 
consumindo rede, sem necessidade
+ Se processos acessam recurso com frequência a ficha circulará de forma justificada 
- os processos estão de fato sincronizando entre si para acessar recursos compartilhados
67
Algoritmo descentralizado
● Evolução do centralizado: replica o coordenador
○ coord-1, coord-2, …, coord-n
● Requisitante precisa receber maioria de votos de coordenadores: m > n/2
○ m: quantidade de votos
○ n: quantidade de réplicas
● Quem não tem maioria tenta novamente depois de um tempo aleatório
68
Algoritmo descentralizado
69
1
C1 C2 C3 C4 C5
n = 5 (réplicas)
m1 > n / 2 ?
m1 = 5 (votos)
5 > 2,5
(permitido!)
Algoritmo descentralizado
70
1
C1 C2 C3 C4 C5
2
n = 5 (réplicas)
m1 > n / 2 ?
m1 = 3 (votos)
3 > 2,5
(permitido!)
n = 5 (réplicas)
m2 > n / 2 ?
m2 = 3 (votos)
2 n / 2 ?
m1 = 2 (votos)
2 n / 2 ?
m2 = 2 (votos)
2 n / 2 ?
m3 = 1 (votos)
1 450K)
○ computar o hash de 450K blocos seria demorado?
Prova de Trabalho
● A blockchain do Bitcoin possui aprox 900K blocos… 
○ computar o hash de 900K blocos seria demorado? Não!
○ alterar o bloco de número 450K requer modificar apenas os blocos depois dele (i.e., >450K)
○ computar o hash de 450K blocos seria demorado? Não!
● Solução: prova de trabalho
○ desafio: encontrar um nonce para que o hash do bloco inicie com uma quantidade específica de zeros (dificuldade)
Prova de Trabalho
● Solução: prova de trabalho
○ desafio: encontrar um nonce para que o hash do bloco inicie com uma quantidade específica 
de zeros (dificuldade)
Implementando nossa própria Blockchain
Implementação própria dos aspectos básicos da blockchain, para fins educativos.
https://github.com/eduardolfalcao/edublockchain 
https://github.com/eduardolfalcao/edublockchain
Mineração
● Minerar é procurar por um nonce válido, e quem minera é 
um minerador :)
● Por que minerar?
○ O minerador vencedor é recompensado com Bitcoins
■ Coinbase transaction é a primeira transação do bloco
https://www.blockchain.com/btc/block/00000000000000000002bf0deae39e8fe443fadae6c5505885be487f843d896aMineração
● Minerar é procurar por um nonce válido, e quem minera é 
um minerador :)
● Por que minerar?
○ O minerador vencedor é recompensado com Bitcoins
■ Coinbase transaction é a primeira transação do bloco
● Recompensa
○ Início do Bitcoin: 50 BTC
○ A cada 4 anos esse número cai pela metade
■ em 2019 era aproximadamente 12.5 BTC
■ hoje é aproximadamente 3.2 BTC
○ Essa PG não permitirá mais de 21M de BTC
https://www.blockchain.com/btc/block/00000000000000000002bf0deae39e8fe443fadae6c5505885be487f843d896a
https://www.blockchain.com/explorer/blocks/btc/0
Mineração
● Recompensa
○ Início do Bitcoin: 50 BTC
○ A cada 4 anos esse número cai pela metade
■ em 2019 era aproximadamente 12.5 BTC
■ hoje é aproximadamente 3.2 BTC
○ Essa PG não permitirá mais de 21M de BTC
● Taxa de mineração
○ 10 a 30 minutos, próx 1 a 3 blocos ⇒ $0.22
○ 60 minutos, próx 3 blocos ⇒ $0.16
● Pool de transações: [1]
https://www.blockchain.com/explorer/blocks/btc/0
https://en.bitcoin.it/wiki/Transaction_fees
https://www.blockchain.com/explorer/pt/explorer/mempool/btc
Consenso
● Não existe um líder que coordena a blockchain
● Mas existe uma regra: a maior cadeia é a blockchain principal
● Maior esforço computacional ⇒ maior cadeia
○ consenso = prova de trabalho
Consenso
● Ao minerar um bloco, um nó deve enviar o bloco (transações + nonce) para 
outros mineradores 
● Após verificar a validade do bloco, o minerador receptor adiciona o bloco na 
blockchain, e dissemina via broadcast
Ataque de gasto duplo (51%)
Fazendas de Mineração
Bitcoin consumes more energy than Switzerland
https://www.theverge.com/2019/7/4/20682109/bitcoin-energy-consumption-annual-calculation-cambridge-index-cbeci-country-comparison
Prova de participação 
98
● Como funciona: O próximo validador (ou “líder”) é escolhido com base na 
quantidade de tokens que possui em stake. Quanto mais stake, maior a 
chance de ser escolhido.
● Sem custo computacional: Não há resolução de problemas pesados. A 
seleção é “quase gratuita” do ponto de vista computacional.
● Consequências e desafios:
○ Baixo custo para agir mal: 
■ Um validador malicioso pode tentar criar blocos inválidos sem grande custo energético.
■ Como é barato propor blocos em múltiplas cadeias simultaneamente, pode haver 
incentivos para validar forks (o que é perigoso para o consenso).
○ Soluções propostas:
■ Penalidades (slashing) para quem tenta fraudar ou valida blocos conflitantes.
■ Checkpoints e finalizações para impedir múltiplas visões da verdade.
Em Resumo
● Sem relógio global: Cada máquina tem seu próprio relógio — necessidade de 
sincronização.
● Sincronização de relógios: Baseada em troca de mensagens + compensação 
de atrasos de comunicação.
● Relógios Lógicos (Lamport): Garantem ordenação de eventos → C(a)

Mais conteúdos dessa disciplina