Sistemas Distribuídos Prof. Emerson Ribeiro de Mello Instituto Federal de Santa Catarina IFSC campus São José mello@ifsc.edu.br 29 de julho de 2015 1/21
Apresentação da disciplina Objetivo da disciplina Apresentar uma visão geral sobre conceitos de sistemas distribuídos e propiciar aos alunos meios para desenvolver aplicações distribuídas Carga horária: 36hs teóricas + 18hs práticas 07:30 09:20 - quarta-feira (2hs) semana alternada 07:30 09:20 - toda quinta-feira (2hs) Notas de aulas e interação Página da disciplina: http://www.sj.ifsc.edu.br/~mello/std Comunicação através de lista de e-mails 2/21
Apresentação da disciplina Avaliações 02 avaliações teóricas (individual) Uma única recuperação no último dia de aula Conteúdo: Tudo que for passado em sala (inclusive material para leitura) e a bibliografia básica Projetos práticos (individual ou em dupla) Serão executados ao longo do semestre Não haverá recuperação para projetos Critérios para aprovação Obter no mínimo o conceito C em todas as avaliações, inclusive na recuperação Possuir no mínimo 75% de presença, inclusive para pleitear a avaliação de recuperação 3/21
Apresentação da disciplina Relação com outras unidades curriculares Laboratórios envolverão aplicativos Linux, linguagens C e Java 4/21
Apresentação da disciplina Conteúdo programático 1 Introdução aos sistemas distribuídos 2 Arquitetura de sistemas distribuídos 3 Comunicação em sistemas distribuídos 4 Serviço de nomes 5 Sincronismo em sistemas distribuídos 6 Tolerância a faltas 7 Segurança 5/21
Bibliografia TANENBAUM, Andrew S.; STEEN, Maarten van Sistemas Distribuidos: Princípios e paradigmas COULOURIS, George; KINDBERG, Tim; DOLLIMORE, Jean Sistemas Distribuídos: Conceitos e Projeto TANENBAUM, Andrew S. Sistemas operacionais modernos 6/21
Introdução aos Sistemas Distribuídos Definições TANENBAUM, Andrew S.; STEEN, Maarten van É uma coleção de computadores independentes que para os usuários se apresentam como um único sistema 7/21
Introdução aos Sistemas Distribuídos Definições COULOURIS, George; KINDBERG, Tim; DOLLIMORE, Jean É um sistema cujo componentes estão espalhados em computadores distintos que usam a rede para se comunicarem e coordenarem suas ações 7/21
Introdução aos Sistemas Distribuídos Definições Leslie Lamport Você sabe que tem um sistema distribuído quando a falha de um computador, que se quer sabia de sua existência, torna seu próprio computador inútil 7/21
Exemplo de Sistemas Distribuídos Aplicações Web 8/21
Exemplo de Sistemas Distribuídos Aplicações Web Brasil 8/21
Exemplo de Sistemas Distribuídos Aplicações Web Após digitar a URL o que acontece por debaixo? Como a página aparece no navegador? 9/21
Exemplo de Sistemas Distribuídos Aplicações Web Após digitar a URL o que acontece por debaixo? Como a página aparece no navegador? Passos 1 Resolver nome para IP Consultar servidor DNS Diversos IP podem estar associados 2 Conectar no IP HTTP GET e POST 3 Processar HTML 9/21
Exemplo de Sistemas Distribuídos Datacenter distribuídos Primeiros equipamentos da Google 10/21
Exemplo de Sistemas Distribuídos Datacenter distribuídos 10/21
Exemplo de Sistemas Distribuídos Datacenter distribuídos 10/21
Exemplo de Sistemas Distribuídos Datacenter distribuídos 10/21
Exemplo de Sistemas Distribuídos Computação distribuída Grande quantidade de informação a ser processada Supercomputadores são caros, combinar milhares de computadores é a saída mais barata SETI@HOME Use o tempo ocioso do teu CPU para buscar ETs http://setiathome.berkeley.edu Folding@HOME Simulação de enrolamento de proteínas para entender doenças com o mal de Alzheimer http://folding.stanford.edu Renderização de animações (p.e. Monstros S.A) Fazenda de renderização com 3.500 processadores A renderização de cada quadro de Sullivan demorou 12 horas 11/21
Exemplo de Sistemas Distribuídos Computação distribuída Grande quantidade de informação a ser processada Supercomputadores são caros, combinar milhares de computadores é a saída mais barata Em 1994 a NASA constrói o primeiro cluster Beowulf, usando 1.024 computadores comuns com sistema operacional Linux interconectados através de uma rede de computadores local (alta velocidade e baixa latência) e compartilhando um sistema de arquivos Hoje você pode construir o teu cluster Beowulf a partir de 2 computadores comuns e com distribuições Linux livecd 11/21
Exemplo de Sistemas Distribuídos Aviação 12/21
Por que Sistemas Distribuídos? Evolução nas taxas de transmissão Taxas de transmissão LAN 1976 2.94Mbps 1985 10Mbps 1991 10BaseT 10Mbps 1995 100Mbps 1998 1Gbps 2001 10Gbps 2010 100Gbps Taxas de transmissão WAN 1958 110bps 1984 2400bps 1991 14.4Kbps 1994 28.8Kbps 1996 33.6Kbps 2000 56Kbps 2005 24Mbps (ADSL2+) 13/21
Por que Sistemas Distribuídos? Evolução dos computadores 1945 Computadores caros e grandes 1974 Intel 8080 2Mhz 2004 Intel Pentium4 3.6Ghz 2011 Intel Xeon 10-core 3.33Ghz 2013 Intel i7 4-core 3.0Ghz 14/21
Por que Sistemas Distribuídos? Evolução dos computadores 1945 Computadores caros e grandes 1974 Intel 8080 2Mhz 2004 Intel Pentium4 3.6Ghz 2011 Intel Xeon 10-core 3.33Ghz 2013 Intel i7 4-core 3.0Ghz Não conseguimos mais aumentar a velocidade do processador Solução: Criar vários núcleos em um processador Sistemas paralelos em um chip 14/21
Sistemas paralelos: Multiprocessadores simétricos (SMP) Todos CPUs conectados em um barramento Memória compartilhada Relógio compartilhado Tudo ou nada falha 15/21
Sistemas paralelos: Multiprocessadores simétricos (SMP) Todos CPUs conectados em um barramento Memória compartilhada Relógio compartilhado Tudo ou nada falha 15/21
Sistemas paralelos: Multiprocessadores simétricos (SMP) Todos CPUs conectados em um barramento Memória compartilhada Relógio compartilhado Tudo ou nada falha 15/21
Comunicação com múltiplos computadores Não existe memória compartilhada Toda comunicação é através da rede de dados Tráfego é bem menor se comparado com o acesso a memória 16/21
O que é um Sistema Distribuído TANENBAUM, Andrew S.; STEEN, Maarten van É uma coleção de computadores independentes que para os usuários se apresentam como um único sistema Sem memória compartilhada e sem relógio compartilhado Usuário imagina que está interagindo com um único sistema Computadores autônomos que colaboram Como estabelecer esta colaboração é o principal ponto do desenvolvimento dos sistemas distribuídos 17/21
O que é um Sistema Distribuído Vantagens e Dificuldades Sistema continua operando mesmo diante da falha de um de seus integrantes (isolamento físico) O isolamento físico implica que nenhum nó terá conhecimento do estado global Como garantir a consistência da informação nos nós diante de atrasos ou perda de mensagens? 18/21
O que é um Sistema Distribuído Permite a comunicação entre aplicações Esconde das aplicações as diferenças de hardware e sistemas operacionais 19/21
Por que Sistemas Distribuídos? Sistemas com multiprocessadores não são escaláveis Desempenho vs Custo Renderização do Sullivan precisaria de um computador com 3.500 CPU. Algumas aplicações são nativamente distribuídas Navegação web, sistemas de monitoramento, sistemas de controle Algumas aplicações são críticas Deverá continuar funcionando, mesmo diante de uma falha (p.e. em um computador) 20/21
Por que Sistemas Distribuídos? Sistemas com multiprocessadores não são escaláveis Desempenho vs Custo Renderização do Sullivan precisaria de um computador com 3.500 CPU. Algumas aplicações são nativamente distribuídas Navegação web, sistemas de monitoramento, sistemas de controle Algumas aplicações são críticas Deverá continuar funcionando, mesmo diante de uma falha (p.e. em um computador) Por que estudar Sistemas Distribuídos na Eng. de Telecomunicações? Desenvolvimento de produtos na área necessariamente envolverá desenvolvimento de software Sistemas de telecomunicações são distribuídos por natureza 20/21
Exercícios 1 Veja em http://bit.ly/1p8an13 a lista de TCCs defendidos no CST de Telecomunicações. Escolha 03 que possuam relação com a área de Sistemas Distribuídos e apresente um resumo dos mesmos para justificar sua escolha. Entrega para próxima semana 21/21