Sistemas Distribuídos Walfredo Cirne & Fubica Brasileiro http://walfredo.dsc.ufcg.edu.br/cursos/2005/distsis20052 Aula 2: Introdução a Sistemas Distribuídos As figuras que aparecem nesses slides são de Veríssimo&Rodrigues, reproduzidas com o consentimento dos mesmos. Uma Visão Macro O que é um sistema distribuído? • 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? • Um grid é um sistema distribuído? O que é um sistema distribuído (revisitado)? • Que características fazem com que a construção de um sistema distribuído seja mais difícil? – Componentes com diferentes modos de falha – Falhas parciais – Inexistência de relógio global exato – Grandes variações nos atrasos associados com a comunicação entre processos Quando distribuir? • Por que complicar? – Às vezes o problema é distribuído • Ex. Groupware – Soluções distribuídas podem trazer benefícios inerentes à distribuição (mais sobre isso adiante) • Escala, incremento na confiança do funcionamento (dependability) – Soluções distribuídas são mais adaptáveis • Upgrade gradativo Sistemas centralizados vs Sistemas distribuídos • Características de sistemas centralizados – Acesso local, homogeneidade, facilidade de gerência, maior consistência, segurança contra intrusos • Características de sistemas distribuídos – Acesso remoto, heterogeneidade, modularidade, escalabilidade, compartilhamento de recursos, degradação paulatina, mais sujeito a ataques, custo menor Que valores a distribuição pode adicionar? • Confiabilidade – Como calcular a confiabilidade de um sistema? – Redundância é natural • Crescimento modular • Integração de serviços • Custo – É importante considerar o aumento do custo com gerência! Arquiteturas de Sistemas Distribuídos e um Pouco de História • Quais os drivers da evolução das arquiteturas? – Avanços tecnológicos – Mudanças nos requisitos definidos pelos usuários – Avanços tecnológicos –… Antes dos sistemas distribuídos • Acesso remoto Primeiras formas de distribuição • Distribuição de arquivos e memória (o advento das estações de trabalho) O mundo evolui de forma estranha • De volta ao acesso remoto (o fator custo) Primeiros sistemas realmente distribuídos • Arquitetura cliente-servidor (ainda o fator custo – a era do downsizing) Uma solução para a síndrome do cliente “gordo” • Cliente-servidor em três camadas (o fator WWW) Arquiteturas peer-to-peer Mobilidade • Código e processadores móveis (java, agentes móveis, PDAs/laptops, telefonia sem fio, redes de sensores, redes ad-hoc, etc são os drivers) Comunicação sincrona vs Comunicação assíncrona 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 de 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 e tempo – Eventos podem ser locais ou podem ser trocas de mensagem • Eventos ordenados e concorrentes – t(e) é o tempo real em que e ocorreu • Mas, o que é o tempo real? – Timestamps Estados globais Propriedades de um sistema • Safety – Alguma coisa ruim não pode acontecer • Liveliness – Alguma coisa boa vai acontecer • Timeliness – Adicionam requisitos de tempo real às propriedades de liveliness