Aplicações Distribuídas

Propaganda
Sistemas Distribuídos
Walfredo Cirne & Fubica Brasileiro
Aula 3:Conceitos Básicos
As figuras que aparecem nesses slides são de Veríssimo&Rodrigues, reproduzidas com o
consentimento dos mesmos.
Conceitos Fundamentais e
Convenções de Notação
Notações formais
• É normalmente conveniente tratar com processos ao invés
de processadores
– Um sistema distribuído é composto por N processos que executam
em M processadores
– Processadores são conectados por canais de comunicação
• A evolução do sistema é modelada por uma sequência de
eventos eip
– Um evento modifica o estado do processo p
• A história H é uma seqüência de tuplas contendo um
evento eip e o estado de p após eip
• Uma execução (run) é um conjunto ordenado de eventos
descrito por uma história
Eventos
• Eventos podem ser locais ou podem ser
trocas de mensagem
– Eventos ordenados e concorrentes
Eventos e tempo
• t(e) é o tempo real em que e ocorreu
• Relógios locais e timestamps
– Granularidade do relógio
Estado global
• Especificação
– Se no tempo t cada processo está no estado Si
e as mensagens em transito no canal cij que
liga pi a pj é S(cij), então o estado global é dado
por S = {S1, S2, ... Sn} U {S(cij), 1≤I,j≤n, i ≠j}
• Como computar S internamente?
– Troca de mensagens mudará o estado do
sistema!
– Há protocolos de snapshot que resolvem este
problema
Snapshots distribuídos
Propriedades de um sistema
• Safety
– Alguma coisa ruim não pode acontecer
• Liveliness
– Alguma coisa boa vai acontecer um dia
• Timeliness
– Adicionam requisitos de tempo real às
propriedades de liveliness
Nomes e endereços
• Nomes identificam objetos
– Nomes únicos globalmente × contexto de nomes
– Nomes “puros” × “impuros”
• Endereços são nomes usados por algum sistema
de comunicação para entregar mensagens
• Nomes são resolvidos em endereços
– “Ciência da Computação é a ciência que resolve
problemas adicionando níveis de indireção”
– Quais resoluções temos quando enviamos um email
para [email protected]?
– Nomes podem ter seu significado mudado ao longo do
tempo
Mapeamento/resolução de nomes
• Serviços de nomes traduzem nomes em
endereços
– Binding
• Associa um nome a um endereço
– Lookup
• Recupera (resolve) um endereço a partir de um nome
– Unbiding
• Desassocia um nome a um endereço
• O servidor de nomes precisa usar um endereço
bem conhecido
Servidores de nomes
Troca de mensagens
• Mecanismo básico de interação em sistemas distribuídos
• Endereçamento, protocolo e formato das mensagens
• Confiabilidade
Semântica de Bloqueio
• O send pode retornar quando:
– Se recebe um ack
– Quando o dado enviado está bufferizado
– Imediatamente
• Cada opção tem impactos de performance e
interface
• Respose-and-reply × Notification/events
Operação remota
• Chamada/invocação remota de
procedimento/método
– Marshalling/unmarshalling
– Bloqueio durante a execução
– Semântica de falhas
• Mecanismo básico usado no
paradigma cliente/servidor
– Amplamente usada (ex Java RMI)
Usando multiplas threads
com operações remotas
Comunicação em grupo
• Difusão de conteúdo
– especialmente streaming
• Grupo de servidores
– melhor disponibilidade e/ou performance
• 1 multicast ≠ n unicasts
Multicast para difusão de conteúdo
Group membership
• Serviço usado para construção de grupos
de replicas
– Provê serviço de alto nível
– Entrega confiável de mensagens
• Visão do grupo
– Os membros do grupo sabem quem está no
grupo
• Ordenação de mensagens
– O enviador recebe suas próprias mensagens
Principais componentes de um
protocolo de multicast
• Serviço de transporte
– Roteamento
– Tolerância a omissões
– Controle de fluxo
• Ordenação
• Gerência de filiação (incluindo recuperação
de falhas)
Tempo e relógios
• O que é o tempo real?
– Função monotônica contínua e crescente [Newtoniano]
• O que é 1 segundo?
– Divisor de um dia solar
– Relógios atômicos
• A linha do tempo
– timestamps
– duração de intervalos
• Relógios
O papel do tempo
• Gravar e observar a localização de eventos
na linha do tempo
– seqüênciamento de eventos que formam um
estado global
– medir a duração entre dois eventos
• Forçar o futuro posicionamento de eventos
na linha do tempo
– sincronização
Medindo tempo em sistemas
distribuídos
• Como medir durações distribuídas?
• Como reconciliar diferentes linhas do
tempo?
– Ex. qual o tempo de transmissão de uma
mensagem?
• Tempo global × tempo absoluto
Relógios locais físicos
• O hardware (rf) implementa uma função
monotônica discreta e crescente que
mapeia o tempo real t em um tempo de
relógio rf(t)
• Imperfeições de relógios físicos
– Granularidade (g)
– Taxa de desvio (r)
Propriedades de um relógio físico
• Granularidade
– Relógios físicos avançam em ticks (tk)
• g = rf(tk+1) – rf(tk)
• Taxa de desvio
– Depende da qualidade do relógio e das
condições do ambiente (ex. temperatura)
• 0 ≤ 1-r ≤ (rf(tk+1) – rf(tk))/g ≤ 1+r
Para que serve um relógio local?
• Prover timestamps para eventos locais
• Medir durações locais
– Qual o erro causado pela taxa de desvio?
– r é tipicamente na ordem de 10-5
• Definir timeouts
• Medir durações de atraso round-trip
Relógios globais
• Um relógio global é construído através da
sincronização de relógios locais por um
protocolo de sincronização de relógio
– Cada processo p cria um relógio virtual (rvp) a
partir do seu relógio local (rfp)
– Os relógios virtuais são criados de forma a
estarem sincronizados
– São resincronizados de tempos em tempos
– NTP é o protocolo mais comum para isso
Propriedades de um relógio global
• Convergência (d): quão próximo os relógios estão
sincronizados logo após uma resincronização
• Precisão (p): quão próximos os relógios se
mantêm sincronizados entre si em qualquer tempo
• Exatidão (a): quão próximos os relógios estão
sincronizados em relação a uma linha de tempo
absoluta de referência
– Requer um dispositivo de sincronização externa
(ex. GPS) em algum lugar do sistema
• Taxa de desvio (r): é a taxa instantâneo de desvio
do relógio global
Propriedades de um relógio global
Download