Baixe o app para aproveitar ainda mais
Prévia do material em texto
Sistemas Distribuídos Introdução (visão geral) CURSO: Tecnologia em Análise e Desenvolvimento de Sistemas (TADS) DISCIPLINA: Sistemas Distribuídos PROFESSOR: Claudio Roberto de Lima Martins cmartins.ifpa@outlook.com 1 mailto:cmartins.ifpa@outlook.com Agenda • Introdução • Evolução Histórica • Motivação • Definição de Sistemas Distribuídos (SD) • Características de SD • Desafios • Exemplos • Resumo 2 Introdução • Redes de computadores estão presentes em toda parte! ▫ Redes móveis (Mobile phone networks) ▫ Redes corporativas (Corporate networks) ▫ Redes em fábricas ▫ Redes domésticas ▫ Redes indoor ▫ Redes em aviões, trens, metrôs, ônibus, caros, etc. todas elas, tanto separadamente como em conjunto, compartilham as características básicas relacionados a sistemas distribuídos. 3 Evolução histórica • Computadores iniciais: caros e grandes ▫ execução por um operador: setup do job (carregar cartões), executar programa, imprimir resultado • Anos 50 e 60: batching, spooling, multiprogramação ▫ batching: juntar jobs semelhantes para processamento ▫ spooling: sobreposição de I/O e CPU ▫ multiprogramação: diversos programas sendo executados concorrentemente pela CPU ▫ Objetivo: otimizar a utilização da CPU 4 Evolução histórica • Não existia a interação entre usuário e computador ▫ alto custo para processos interativos: depuração • Início dos anos 60: sistemas de time sharing ▫ utilização de diversos terminais “burros” conectados a um computador ▫ impressão de um computador por usuário ▫ tarefas principais/comuns são executadas pelo computador principal desenvolvimento dos minicomputadores: menores e mais rápidos! ▫ 1o. passo na direção dos sistemas distribuídos! compartilhamento de recursos acesso remoto • Terminais e computador muito próximos 5 Evolução histórica • Final dos anos 60 e início dos anos 70: surgimento das redes de computadores e do sistema operacional UNIX ▫ Ethernet – Xerox Palo Alto (1973): Local Area Network permitiu interligar mais computadores a distâncias maiores usando uma velocidade maior (e.g. rede de computadores de um prédio) ▫ ARPANet – DoD (1969): Wide Area Network interligação entre computadores localizados dispersamente (cidades e/ou países diferentes) 6 Evolução histórica • Final dos anos 70: protocolo TCP/IP ▫ definição de padrão para comunicação entre computadores • Início dos anos 80: microprocessadores e estações de trabalho ▫ redução do custo (em relação aos mainframes) • Final dos anos 80: estações de trabalho ligadas em rede ▫ diversos serviços para comunicação entre pessoas/máquinas: FTP, TELNET, MAIL 7 Motivação • Avanços em microeletrônica ▫ processadores mais rápidos e baratos • Avanços em comunicações ▫ redes mais eficientes e confiáveis • Popularidade das redes de computadores ▫ redes de telefones celulares, redes corporativas, redes caseiras ▫ redes de computadores de alta velocidade (Myrinet ~2Gb/s) 8 Motivação • Compartilhamento de recursos ▫ Componentes de HW (disco, impressora) ▫ SW (arquivos, bases de dados, programas) ▫ Outros (vídeo, áudio) • Relação custo/desempenho ▫ melhor utilizar diversos processadores interconectados do que um único computador centralizado 9 Definição de Sistema Distribuído • O que é um Sistema Distribuído? ▫ Um sistema distribuído é uma coleção de computadores independentes que parecem um sistema único para o usuário [Tanenbaum]. ▫ É um sistema onde os componentes de HW e SW, localizados em computadores interligados por uma rede, comunicam e coordenam suas ações somente através de troca de mensagens [Coulouris]. 10 Outra definição de SD • "Você sabe que tem um sistema distribuído quando a falha de um computador do qual você nunca ouviu falar faz com que você pare completamente de trabalhar." [Leslie Lamport] - Dois aspectos: ▫ Hardware: autonomia ▫ Software: sistema único 11 Redes vs. Sistemas Distribuídos • Sistemas Distribuídos: ▫ A existência de múltiplos computadores autonômos é transparente. • Porém, ▫ muitos problemas em comum, mas em diferentes níveis (ex: segurança, confiabilidade…) Redes foca em pacotes, roteamento, etc., enquanto SD foca em aplicações. SD confia nos serviços fornecidos por uma rede de computadores. Computer Networks Distributed Systems 12 • Redes: ▫ um meio de interconexão local ou à distância de computadores que trocando mensagens baseado em protocolos. As entidades na rede são visíveis e são explicitamente endereçaveis (Ex: endereço IP) Características • Processos são executados concorrentemente no sistema distribuído ▫ não existe um controle global! ▫ processos usam troca de mensagens para coordenar suas ações • Inexistência de relógio global ▫ noção de tempo global é importante na coordenação de processos ▫ sincronização de relógios possui um limite de precisão 13 Características • Falhas independentes ▫ a falha de um dos componentes (rede, máquinas, programas) do sistema distribuído não implica na falha do sistema como um todo. 14 Vantagens • Economia – melhor relação custo/desempenho ▫ Lei de Grosch: desempenho é proporcional ao quadrado do custo Lei válida somente para plataforma dos “mainframes” • Velocidade ▫ 10.000 CPUs x 50 MIPS = 500.000 MIPS ▫ Uma CPU para isto deveria executar uma instrução a cada 0,002 nanosegundos (2 picosegundos). 15 Vantagens • Exemplos de aplicações (sistemas) que devem empregar arquitetura distribuída: ▫ Sistema de reservas de passagens de viagens, hotéis, ingressos no cinema, teatro, etc. ▫ CSCW – computer supported cooperative work (Sistemas de Trabalho Cooperativo) ▫ CSCG – computer supported cooperative game (Sistemas de Jogos On-line) 16 Vantagens • Maior confiabilidade (reliability) e disponibilidade ▫ grau de tolerância contra erros e falhas de componentes em um sistema 5% fora do ar = 5% em perda de desempenho ▫ Aplicações críticas: aviação, reatores nucleares ▫ Replicação de componentes • Facilidade de expansão ▫ permite aumentar o poder de processamento/armazenamento sem se desfazer daquilo que já possui, isto é, de maneira gradativa. 17 Vantagens • Permite o compartilhamento de dados/informação ▫ desenvolvimento de software distribuído (e.g. Controle de Versão com Git ou CVS) • Permite o compartilhamento de recursos ▫ economia (Ex. impressora, software, bases de dados, disco, pool de processadores) 18 Exemplo • Impressão usando a rede web (usando o serviço de impressão do Google) 19 Desvantagens • Maior dificuldade na garantia de segurança (crítico!) • Desevolvimento de sw distribuído é mais complexo • Gerência de recursos mais complexa • Alto custo para implementar aplicações colaborativas • Causas ▫ recursos são fisicamente separados ▫ mensagens podem atrasar ▫ mensagens podem ser perdidas ▫ ... 20 Desafios • comunicação segura ▫ Quem enviou? Os dados foram modificados durante a transmissão? Alguém não autorizado teve acesso aos dados? • confiabilidade em um ambiente não confiável ▫ máquinas podem falhar, mas o SD deve falhar parcialmente 21 Desafios • localização ▫ colocar os recursos em um determinado local e permitir a localização destes recursos quando necessário • coordenação ▫ acordo entre os componentes distribuídos sobre o que fazer e de que forma 22 Exemplos de Sistemas Distribuídos • Internet: grande coleção de diferentes redes de computadores interconectadas. Comunicação através de troca de mensagens ▫ Serviços: www, ftp, mail • Intranet: parte da Internet administrada separamente ▫ Políticas de segurança locais (firewall) ▫ Necessidades: serviço de compartilhamento de arquivos, firewalls para proteção, facilidade de instalação e suporte de software 23 Exemplos de SDs • Computação móvel: avanços na miniaturização de dispositivos e redes sem fio ▫ Integração de pequenos dispositivos computacionais portáteis ▫ Laptops, PDAs,celulares, pagers, câmeras digitais, wearable devices, dispositivos integrados a utensílios ▫ Problemas: descoberta de recursos no ambiente, reconfiguração de dispositivos, privacidade e segurança 24 Exemplos de Aplicações com SDs • Caixas automáticos de Banco • Sistema de reserva de passagens • SETI@home • Netflix (serviço de streamming de video) • Jogos “on line” • Sistemas de comunicação (Skype, WhatsApp) • A arquitetura Blockchain (usado no BitCoin) 25 SETI@home -Search for Extraterrestrial Intelligence at Home • Universidade da Califórnia, Berkeley • Objetivo: utilizar a capacidade de processamento de centenas de milhares de computadores conectados à Internet na procura de inteligência extraterrestre • Utilização: ▫ instalação de um programa (screensaver) ▫ quando o computador esta ocioso o programa realiza o download de um pacote de dados (work unit - ~340KB) obtidos por rádio-telescópio (Observatório de Arecibo) e faz uma procura por sinais extraterrestres • Possui aproximadamente 3 milhões de usuários 26 https://setiathome.berkeley.edu/ https://setiathome.berkeley.edu/ SETI@home 27 Structure of the SETI@home data server 28 https://www.researchgate.net/publication/3422381_SETIhome-massively_distributed_computing_for_SETI https://www.researchgate.net/publication/3422381_SETIhome-massively_distributed_computing_for_SETI Netflix http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html O Netflix é uma plataforma de serviços de distribuição de filmes e séries de TV online, um serviço de streaming completo. Baseado na “nuvem” em um sistema distribuídos em vários servidores espalhados no mundo. 29 http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html http://www.techtudo.com.br/tudo-sobre/netflix.html A arquitetura Blockchain 30 https://www.concrete.com.br/2017/08/25/blockchain-a-arquitetura-disruptiva/ https://www.concrete.com.br/2017/08/25/blockchain-a-arquitetura-disruptiva/ Resumo • Sistemas Distribuídos estão em toda parte . • A Internet permite que os usuários em todo o mundo acessem seus serviços onde quer que estejam. • Compartilhamento de recursos são os principais fatores de motivação para a construção de sistemas distribuídos. • Construção de SD produz muitos desafios ▫ Heterogeneidade, abertura, segurança, escalabilidade, tratamento de falhas, concorrência e transparência . • Sistemas distribuídos possibilitam a globalização: Comunidades (equipes virtuais, organizações, redes sociais), Ciência (e-Science), Negócios (e-Bussiness). 31 Aula 1 - Sistemas Distribuídos - Conceitos Básicos https://www.youtube.com/watch?v=BSufWy0ZIeo https://www.youtube.com/watch?v=BSufWy0ZIeo Exercícios (selecionados do livro “Couloris” – cap1) 1. Cite cinco tipos de recurso de hardware e cinco tipos de recursos de dados ou de software que possam ser compartilhados com sucesso. Dê exemplos práticos de seu compartilhamento em sistemas distribuídos. 2. Compare e contraste a computação em nuvem com a computação cliente-servidor mais tradicional. O que há de novo em relação à computação em nuvem como conceito? 3. Use a World Wide Web como exemplo para ilustrar o conceito de compartilhamento de recursos, cliente e servidor. Quais são as vantagens e desvantagens das tecnologias básicas HTML, URLs e HTTP para navegação em informações? Alguma dessas tecnologias é conveniente como base para a computação cliente-servidor em geral? 32 exercicios (cont) 4. Os recursos na World Wide Web e outros serviços são nomeados por URLs. O que denotam as iniciais URL? Dê exemplos de três diferentes tipos de recursos da Web que podem ser nomeados por URLs. 5. Cite um exemplo de URL HTTP. Liste os principais componentes de um URL HTTP, dizendo como seus limites são denotados e ilustrando cada um, a partir de seu exemplo. Até que ponto um URL HTTP tem transparência de localização? 33 Resolução 34 1. Cite cinco tipos de recurso de hardware e cinco tipos de recursos de dados ou de software que possam ser compartilhados com sucesso. Dê exemplos práticos de seu compartilhamento em sistemas distribuídos. Hardware: CPU: servidor de computação (executa aplicativos intensivos em processador para clientes), servidor de objetos remoto (executa métodos em nome de clientes), programa worm (compartilha capacidade de CPU da máquina de mesa com o usuário local). A maioria dos outros servidores, como servidores de arquivos, fazem alguma computação para seus clientes, daí a sua CPU é um recurso compartilhado. Memória: cache de servidor (mantém as páginas web acessadas recentemente na sua RAM, para acesso mais rápido por outros computadores locais) Disco: servidor de arquivos, servidor de disco virtual (consulte o Capítulo 8), servidor de vídeo sob demanda (consulte o Capítulo 15). Tela (de vídeo): Os sistemas de janelas de rede, como o X-11, permitem que os processos em computadores remotos atualizem o conteúdo das janelas. Impressora: impressoras em rede aceitam trabalhos de impressão de muitos computadores. Gerenciando-os com um sistema de enfileiramento. Circuitos de rede: a transmissão de pacotes permite que muitos canais de comunicação simultâneos (fluxos de dados) sejam transmitidos nos mesmos circuitos. 35 Dados / software: Página da Web: os servidores web permitem que vários clientes compartilhem conteúdo de página somente leitura (geralmente armazenado em um arquivo, mas às vezes gerado on-the-fly). Sistema de Arquivos: os servidores de arquivos permitem que vários clientes compartilhem arquivos de leitura e gravação. Atualizações conflitantes podem resultar em resultados inconsistentes. Mais útil para arquivos que mudam com pouca freqüência, como binários de software. Objeto: as possibilidades para objetos de software são ilimitadas. Por exemplo. “Whiteboard” compartilhado (edição de imagem), documentos compartilhados (texto, planilha), agenda compartilhada, sistema de reserva de hospedagem, etc. Base de dados: as bases de dados destinam-se a registrar o estado definitivo de alguns conjuntos de dados relacionados. Eles foram compartilhados desde o surgimento dos computadores multiusuários. Eles incluem técnicas para gerenciar atualizações simultâneas. Conteúdo de notícias em newsgroup: O sistema de notícias faz cópias somente leitura das notícias publicadas recentemente disponíveis para clientes em toda a Internet. Uma cópia do conteúdo do newsgroup é mantida em cada servidor de notícias que é uma réplica aproximada daqueles em outros servidores. Cada servidor disponibiliza seus dados para vários clientes. Fluxo (streaming) de vídeo/áudio: os servidores podem armazenar vídeos inteiros em disco e entregá-los em velocidade de reprodução para vários clientes simultaneamente. Lock exclusivo: um objeto em nível de sistema fornecido por um servidor de bloqueio, permitindo que vários clientes coordenem seu uso de um recurso (como a impressora que não inclui um esquema de fila). Resolução 36 2. Compare e contraste a computação em nuvem com a computação cliente-servidor mais tradicional. O que há de novo em relação à computação em nuvem como conceito? No livro, a computação em nuvem é definida em termos de: (1)suporte a serviços baseados na Internet (se aplicativos, armazenamento ou outros serviços baseados em computação), onde tudo é um serviço, - é completamente consistente com a computação cliente-servidor e, de fato, os conceitos de cliente-servidor suportam a implementação da computação em nuvem. (2) dispensar armazenamento local de dados ou software aplicativo. - destaca um dos elementos-chave da computação em nuvem em se mudar para um mundo onde você pode dispensar serviços locais. Esse nível de ambição pode ou não estar presente na computação cliente-servidor. A computação em nuvem promove uma visão da computação como uma utilidade e isso está ligadoa modelos de negócios frequentemente novos, em que os serviços podem ser alugados ao invés de serem propriedade, levando a uma abordagem mais flexível e elástica à prestação e aquisição de serviços. Esta é uma distinção fundamental na computação em nuvem e representa a novidade fundamental na computação em nuvem. Para resumir, a computação em nuvem é parcialmente uma inovação técnica em termos do nível de ambição, mas em grande parte uma inovação de negócios em termos de visualização de serviços de computação como um utilitário. Resolução 37 3. Use a World Wide Web como exemplo para ilustrar o conceito de compartilhamento de recursos, cliente e servidor. Quais são as vantagens e desvantagens das tecnologias básicas HTML, URLs e HTTP para navegação em informações? Alguma dessas tecnologias é conveniente como base para a computação cliente-servidor em geral? Páginas da Web são exemplos de recursos que são compartilhados. Esses recursos são gerenciados por servidores Web. Arquitetura cliente-servidor. O Navegador da Web é um programa cliente (por exemplo, Firefox ou IE) executado no computador. O servidor Web acessa os arquivos locais que contêm as páginas da Web e os fornece ao cliente (processos do navegador). HTML é uma linguagem relativamente simples para analisar e processar, mas confunde apresentação com os dados subjacentes que estão sendo apresentados. Os URLs são localizadores de recursos eficientes, mas não são suficientemente ricos como links de recursos. Por exemplo, eles podem apontar para um recurso que foi realocado ou destruído; sua granularidade (como um recurso) é muito grosseira para muitos propósitos. O HTTP é um protocolo simples que pode ser implementado com uma pequena pegada e que pode ser usado em muitos tipos de transferência de conteúdo e outros tipos de serviço. Sua verbosidade (mensagens HTML tendem a conter muitas strings) torna ineficaz para passar pequenas quantidades de dados. HTTP e URLs são aceitáveis como uma base para a computação cliente-servidor, exceto que (a) não há forte typechecking (serviços web operam por tipo de verificação de valor sem apoio do compilador), (b) há a ineficiência que mencionamos. Resolução 38 4. Os recursos na World Wide Web e outros serviços são nomeados por URLs. O que denotam as iniciais URL? Dê exemplos de três diferentes tipos de recursos da Web que podem ser nomeados por URLs. URL siginifica Uniform Resource Locator (localizador de recurso uniforme). Três exemplos de recursos que podem usar URLs: um arquivo ou uma imagem, filmes, som, qualquer coisa que pode ser processado, uma consulta a um banco de dados ou a um mecanismo de busca. Resolução 39 5. Cite um exemplo de URL HTTP. Liste os principais componentes de um URL HTTP, dizendo como seus limites são denotados e ilustrando cada um, a partir de seu exemplo. Até que ponto um URL HTTP tem transparência de localização? Exemplo de URL HTTP: http://ifpa.edu.br/index.php Principais componentes: • Antes do “:” define o protocolo; ex: http ("HyperText Transport Protocol"). • A parte entre // e / é o nome do domínio no servidor web. Ex: ifpa.edu.br • O resto (depois de /) refere-se à informação solicitada ao servidor (o recurso) que está dentro de um diretório usado no servidor web. Ex: o recurso “index.php” está localizado no diretório raiz do servidor ifpa.edu.br Quanto à transparência: O nome do host "www" é independente da localização, por isso temos a transparência do local em que o endereço de um determinado computador não está incluído. Portanto, a organização pode mover o serviço da Web para outro computador. Porém, se a responsabilidade de fornecer um serviço de informações baseado em WWW se deslocar para outra organização, a URL precisaria ser alterada. Referências • Vídeo-Aulas de Sistemas Distribuídos da Univesp - Universidade Virtual do Estado de São Paulo ▫ https://youtu.be/e4zmQQU3ZqE 40
Compartilhar