Sistemas Distribuídos Walfredo Cirne & Fubica Brasileiro 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)? • Comunicação por mensagem entre os componentes • Falhas parciais • Inexistência de relógio global exato 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 – Homogeneidade, facilidade de gerência, maior consistência, controle centralizado • Características de sistemas distribuídos – Heterogeneidade, modularidade, escalabilidade, compartilhamento de recursos, degradação paulatina, mais sujeito a ataques, custo menor, controle distribuído 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 um 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 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