Este documento discute relógios lógicos em sistemas distribuídos. Apresenta os principais algoritmos para sincronização de relógios, incluindo relógios de Lamport e relógios vetoriais. Detalha como os relógios de Lamport usam uma relação "acontece antes" para ordenar eventos e como os relógios vetoriais podem decidir causalidade entre eventos.
3. RELÓGIOS LÓGICOS
11:37:03 Sistemas Distribuídos - Relógios Lógicos 3
• Mecanismos para identificação de relações
causais e cronológicas em distribuídos, uma vez
que estes fazem uso de uma classe de algoritmos
que têm como base a sincronização de seus
eventos e a consistência interna de seus relógios.
• Principais algoritmos para sincronização de
relógios:
– Relógios de Lamport
– Relógios Vetoriais
4. RELÓGIOS LÓGICOS DE LAMPORT
(1978)
11:37:03 Sistemas Distribuídos - Relógios Lógicos 4
• O que são?
– São mecanismos usados em algoritmos de sincronização de relógios
baseados na relação acontece-antes definida por Lamport
Características:
– Os processos executam em máquinas diferentes, cada uma com seu
clock.
– Cada mensagem leva o valor do clock (relógio) do transmissor.
– Se a mensagem traz um tempo superior ao do receptor, este adianta
seu clock em uma unidade maior que o tempo recebido.
– Os tempos associados aos eventos não são necessariamente próximos
ao tempo real.
– Os processos não precisam estar de acordo sobre o valor exato do
tempo, mas sobre a ordem em que os eventos ocorrem.
•
5. RELAÇÃO ACONTECE-ANTES ( → )
11:37:03 Sistemas Distribuídos - Relógios Lógicos 5
• Se “a” e “b” são eventos dentro do mesmo
processo e se o evento “a” acontece antes do “b”
então: a→b, assim como C(a) < C(b)
*C representa o tempo do respectivo relógio (C = Clock)
• Se “a” é o envio de uma mensagem para um
processo e se “b” é a recepção desta mensagem
por outro processo, então devem ser atribuídos
valores a C(a) e C(b) de maneira que C(a) < C (b)
*C representa o tempo do respectivo relógio (C = Clock)
• A relação acontece-antes é transitiva, ou seja: se
a→b e b→c, então a→c
6. •
11:37:03 Sistemas Distribuídos - Relógios Lógicos 6
No entanto, se “a” e “b” são processos diferentes sem a
existência de cadeias de mensagens entre os processos:
– a || b - “a” e “b” são processos concorrentes, portanto não existe
relação “→“
– Em processos concorrentes, não é possível inferir que a→b ou b→a
7. Detalhamento do mecanismo dos Relógios Lógicos de Lamport
✓ Ci é incrementado de 1 antes de cada evento.
✓ C1 no evento a = 1
✓ C1 no evento b = 2
✓ P2 recebe a mensagem “m1” que contém (m,t) sendo (t = C1). C2, após
evento c, recebe “max (C2,t)+1” que nesse caso é max (0,2)+1 = 3.
✓ a || e , ou seja, não se pode determinar / é ignorado se a→ e ou se e→ a.
11:37:03 Sistemas Distribuídos - Relógios Lógicos 7
9. MULTICAST TOTALMENTE ORDENADO
11:37:03 Sistemas Distribuídos - Relógios Lógicos 9
• Multicast é a entrega de informação para
múltiplos destinatários simultaneamente.
• Os relógios lógicos de Lamport podem ser usados
• Quando uma mensagem é enviada em multicast,
ela é conceitualmente também enviada ao
remetente.
• Um processo só pode entregar uma mensagem
enfileirada à aplicação
10. Update 1 é
realizado antes
do Update 2
11:37:03 Sistemas Distribuídos - Relógios Lógicos 10
Bando de dados
replicado
Update 2 é
realizado antes
do Update 1
11. RELÓGIOS VETORIAIS
11:37:03 Sistemas Distribuídos - Relógios Lógicos 11
• Os Relógios vetoriais são mecanismos usados
em algoritmos de sistemas distribuídos que se
baseiam na ordenação de eventos.
• Os relógios vetoriais são capazes de decidir se
há causalidade entre os eventos,
diferentemente dos relógios de Lamport.
13. IMPOSICAO DE COMUNICAÇÃO
VISUAL
11:37:03 Sistemas Distribuídos - Relógios Lógicos 13
• Com o uso de relógios vetoriais, é possível garantir que
uma mensagem seja entregue somente se todas as
demais mensagens que a precederem por causalidade
também tenham sido recebidas.
Para que tal função seja habilitada consideraremos
que as mensagens são transmitidas em multicast
dentro de um grupo de processos (tendo em vista que
o multicast ordenado por causalidade é mais fraco que
o multicast totalmente ordenado).
•
14. • Utilizando esse esquema consideramos que se
duas mensagens não estiverem relacionadas
uma com a outra de modo nenhum, não
importara a ordem em que elas sejam
entregues.
• Consideramos também que os relógios
somente serão ajustados quando enviam e
recebem mensagens.
11:37:03 Sistemas Distribuídos - Relógios Lógicos 14
15. Em particular notamos que ao enviar uma
mensagem, o processo P, só incrementara VC;{I}
DE 1, já ao receber uma mensagem m com
marca de tempo ts(m), ele só ajustara VC;[k]
para max {VC;[K] , ts(m)[k]}.
Agora supondo que P, receba de P. uma
mensagem m com marca de tempo (vetorial)
ts(m), a mensagem só será entregue quando as
seguintes condições sejam cumpridas
11:37:03 Sistemas Distribuídos - Relógios Lógicos 15
16. 1– ts(m)[i] = VC;[I]+1 (nesta condição afirmamos que m é a
próxima mensagem que P, estava esperando do processo P)
2– ts(m)[k] ≤ VC;[k] para todo k≠i (nesta condição afirmamos
que P, viu todas as mensagem que foram vistas por P, quando
este enviou a mensagem m.
11:37:03 Sistemas Distribuídos - Relógios Lógicos 16
17. OBSERVAÇÃO SOBRE ENTREGA
ORDENADA DE MENSAGENS
11:37:03 Sistemas Distribuídos - Relógios Lógicos 17
• Alguns sistemas de middleware fornecem
suporte para multicast totalmente ordenado e
multicast ordenado por causalidade
• Como o middleware não pode dizer o que
uma mensagem realmente contem, só é
possível capturar causalidade potencial
• O segundo problema é que nem toda
causalidade pode ser capturada.
18. QUESTÕES DE ORDENAÇÃO
11:37:03 Sistemas Distribuídos - Relógios Lógicos 18
• Assim como questões de comunicação
especificas de aplicação, podem ser
adequadamente resolvidas ao examinar a
aplicação com a qual esta correndo a
comunicação de mensagens, isso é conhecido
como argumento fim-a-fim em projeto de
sistemas.
• Uma desvantagem de ter somente soluções no
nível de aplicação é que um desenvolvedor tende
a se concentrar somente em questões