Sistemas Distribuídos Walfredo Cirne Aula 2: Conceitos Básicos As figuras que aparecem nesses slides são de Veríssimo&Rodrigues, reproduzidas com o consentimento dos mesmos.
O que é um sistema distribuído? Um sistema formado por componentes que estão localizados em vários computadores distintos Características de um sistema distribuído Vários computadores Interconectados por uma rede Compartilhando um estado
Exemplos de sistemas distribuídos A Internet é um sistema distribuído? A Web é um sistema distribuído? O DNS é um sistema distribuído? Um multiprocessador é um sistema distribuído? Um cluster é um sistema distribuído?
Características de um Sistema Distribuído Ausência de supervisão única supervisor sistema operacional Inexistência de relógio global exato Falhas parciais Comunicação por mensagem entre os componentes
Exemplos de sistemas distribuídos A Internet é um sistema distribuído? A Web é um sistema distribuído? O DNS é um sistema distribuído? Um multiprocessador é um sistema distribuído? Um cluster é um sistema distribuído?
Quando distribuir? [Por que complicar?] Às vezes, o problema é distribuído Ex. Web, Email, Groupware Benefícios inerentes à distribuição Escala (performance) Aumento na confiança do funcionamento (dependability) Soluções distribuídas são mais adaptáveis Upgrade gradativo
Centralização × Distribuição Características de sistemas centralizados Homogeneidade, facilidade de gerência, maior consistência, controle centralizado Características de sistemas distribuídos Heterogeneidade, modularidade, controle distribuído, menor custo [?], escalabilidade, compartilhamento de recursos, degradação paulatina, mais sujeito a ataques
Que valores a distribuição pode adicionar? Viabilidade Antigamente era “redução de custo” Confiabilidade Redundância é natural Crescimento modular Integração de serviços
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 de histórias dos processos que forma o sistema distribuído
Eventos Eventos podem ser locais ou podem ser trocas de mensagem Eventos ordenados e concorrentes
Precedência [Lamport] Se a e b são eventos no mesmo processo e a precede b, então a b Se a é o envio da mensagem m e b é a recepção da mensagem m, então a b Se a b e b c, então a c
Estado global Especificação Como computar S internamente? Se no tempo t cada processo pi 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
Tempo e relógios O que é o tempo real? O que é 1 segundo? 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 real
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