Sistemas Distribuídos Walfredo Cirne Aula 3: Conceitos Básicos As figuras que aparecem nesses slides são de Veríssimo&Rodrigues, reproduzidas com o consentimento dos mesmos. 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 Ordenação de Mensagens • FIFO: Quaisquer duas mensagens enviadas pelo mesmo participante e entregue a qualquer participante são entregues na mesma ordem de envio. 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 remota de procedimento (ou 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 Relembrando o modelo de Lamport • Um evento pode ser: sistema é composto por uma coleção de • O Cada processo é uma sequência de eventos – uma sub-rotina, uma instrução... processos; – O envio de uma mensagem; – O recebimento de uma mensagem p q r Precedência • 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 Ordenação Causal • Causal: Permite ordenar mensagens enviadas por processos diferentes • Obedece “Entrega Causal”: – se enviop(m) envioq(n), então entregar(m) entregar(n) • Implementação: protocolos que asseguram “ordem lógica” Relógios Lógicos • A idéia é associar um número a cada evento • Cada processo Pi tem um relógio Ci • Um relógio associa um número Ci[a] a cada evento a no processo i • O sistema formado por todos os relógios é representado por C; – C[b] = Ci[b], se b aconteceu no processo i • Os valores de C são apenas contadores Relógios Lógicos • Clock Condition: Para quaisquer dois eventos a e b: se a b, então C[a] < C[b] • Implementação – Cada processo Pi incrementa Ci entre dois eventos sucessivos – Se a é o envio de uma mensagem m por Pi então m carrega o valor Tm de Ci[a]; ao receber m, Pj ajusta seu relógio Cj para um valor maior do que Tm Relógios Vetoriais • Assumindo que todas as mensagens são broadcast • Se unicast ou multicast são permitidos, necessita-se de uma matriz no lugar do vetor Limitações da ordenação causal Ordenação Total • Quaisquer duas mensagens entregues a quaisqueis processos são entregues na mesma ordem • Fundamental para replicação ativa Canais Ocultos Acordo sobre Participantes • Muitas vezes é importante saber quais processos constituem o sistema – Por exemplo, rank e size viabilizam a computação determinística de uma propriedade por todos os processos • Conjunto de participantes = Visão • É fundamental que cada mensagem seja entregue a todos os seus destinatários na mesma visão Troca de Visão Desincronizada Atomic Broadcast • Atomic Broadcast = View Synchrony + Total Order • Atomic Broadcast = Mudança de visão via entrega de mensagem + Total Order Determinismo de Replicas • Atomic broadcast permite implementarmos replicação, desde que as replicas sejam totalmente determinísticas • Mas, como construir replicas perfeitamente determinísticas? – Será que um malloc() é determinístico?