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