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 Como computar S internamente? 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 lula@planalto.gov.br? 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 Grupo de servidores 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? 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 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