UTFPR - Sistemas Distribuídos Prof. Cesar Augusto Tacla. Anotações. Copyright Cesar Augusto Tacla - PDF
UTFPR - Sistemas Distribuídos Prof. Cesar Augusto Tacla. Anotações. Copyright Cesar Augusto Tacla
Download "UTFPR - Sistemas Distribuídos Prof. Cesar Augusto Tacla. Anotações. Copyright Cesar Augusto Tacla 2008 - 1 -"
Joana Pais Ferrão
4 Segundo (Garg, 2004), são sistemas compostos por múltiplos processadores conectados por uma rede de comunicação, sendo a rede de comunicação uma LAN (Ethernet) ou WAN (Internet)
5 Segundo (Tanenbaum & Steen, 2002), sistema distribuído é uma coleção de computadores independentes percebidos pelos usuários como se fosse um computador único, ou seja, o usuário vê o sistema como composto por um único computador que resolve um dado problema ou provê um serviço quando, na realidade, a resolução do problema é realizado ou o serviço é executado por vários computadores. Esta definição faz referência a um conceito importante em sistemas distribuídos, o da transparência
6 Computadores podem estar separados por qualquer distância: na mesma sala, cidade, país ou em continentes diferentes
8 Ressaltar o conceito de transparência de localização (utilizar URLs ao invés de endereços IPs. A Web pode ser considerado um sistema distribuído, pois quando um usuário navega na Internet solicita páginas de vários servidores de forma relativamente transparente em relação à localização dos arquivos (páginas). Apesar de teclar URLs no browser ou clicar sobre links em páginas HTML, o usuário não fornece o endereço IP e porta dos servidores. Ao invés disso, utiliza o serviço do DNS de resolução de nomes. Os servidores proxy também fazem parte deste enorme sistema, provendo acesso às páginas armazenadas em cache. Não se pode esquecer dos roteadores, que fazem os pacotes trafegarem pela rede utilizando bases de dados distribuídas sobre os links. Do ponto de vista do usuário, quais são os serviços oferecidos por este sistema distribuído: -Acesso remoto a páginas (arquivos); -Transferência de arquivos; -Envio/recepção de s. É um sistema aberto, pode ser estendido pela adição de novos servidores e novos tipos de serviços. Por exemplo, serviços de streams tem-se difundido na Web (vídeo, áudio, enfim, multimídia). A animação mostra que do ponto de vista do usuário, o hardware da rede é transparente, ele enxerga serviços! - 8 -
9 Neste exemplo ressaltar que objetos compartilhados podem sofrer acessos concorrentes (ex. uma conta corrente) por diferentes transações. Transparência de localização, o usuário do sistema não precisa saber se os dados de sua conta estão armazenados em Curitiba ou em outra cidade. Aspectos importantes num sistema distribuído bancário: Acessos múltiplos (concorrentes) à mesma conta: vários usuários acessam a mesma conta ou um sistema do banco (emissão de relatórios) acessa ao mesmo tempo em que usuários realizam transações. Confiável: não deixa os objetos em estados inconsistentes. Bases de dados replicadas: aumentam a tolerância a falhas, mas podem tornar o sistema não confiável! Transações bancárias podem envolver contas armazenadas em diferentes bancos ou localidades. O serviço deve ser transparente ao usuário não interessa se os dados de sua conta estão armazenados no banco 1 ou banco 2, a aplicação não deve em nenhum momento deixar transparecer aspectos internos do sistema O serviço deve ser confiável (não deixa os objetos em estados inconsistentes) e seguro Bases de dados replicadas devem ser consistentes. Bases de dados replicadas: aumentam a tolerância a falhas, mas podem tornar o sistema não confiável! Tolerância a falhas - 9 -
10 Napster é um sistema peer-to-peer (não-puro) onde usuários podem compartilhar arquivos de música sem passar pelo servidor, exceto no momento de buscar os arquivos desejados. A arquitetura do Napster é híbrida, pois tem aspectos de cliente-servidor (anúncio e descoberta) e peer-to-peer (transferência de arquivo)
13 O cluster da universidade de Purdue serve aos alunos de graduação contrariamente a maioria dos outros que são preferecialmente montados para pesquisas. Programação utilizando MPI (Message Passing Interface) O modelo de Message Passing é um conjunto de processos que possuem acesso à memória local. As informações são enviadas da memória local do processo para a memória local do processo remoto. [ PI.pdf] Open MPI
15 Um grid oferece a possibilidade de utilizar padrões e protocolos abertos para compartilhar dados, capacidade de processamento, armazenamento e outros recursos computacionais disponíveis na rede. Um grid é um tipo de sistema distribuído que permite compartilhar, selecionar e agregar recursos distribuídos em diversos domínios administrativos com base na disponibilidade dos recursos, capacidade, desempenho, custo e QoS (Quality of Service) necessário ao usuário final. Fonte: IBM Solutions Grid for Business Partners: Helping IBM Business Partners to Grid-enable applications for the next phase of e-business on demand
16 É bastante utilizada em tarefas complexas que podem ser decompostas em subtarefas cujos resultados parciais podem ser obtidos de forma independente e, posteriormente, coletados para compor o resultado final
17 Um grid permite utilizar os recursos computacionais (ex. memória, processador) das máquinas conectadas à Internet quando estão ociosas. São exemplos de projetos que utilizam o conceito de grid: World Community Grid Projeto Human Proteome Folding: identificar proteínas produzidas por genes humanos. Com esta informação, é possível entender como os defeitos das proteínas podem causar doenças tornando mais fácil encontrar curas. Em 2003, com este grid, em menos de três meses, cientistas identificaram 44 tratamentos potenciais para a cura da varíola. Sem o grid, o trabalho levaria mais de um ano. BOINC Berkeley Open Infrastructure for Network Computing (BOINC). Infra-estrutura aberta para computação em rede
18 1. O PC obtém uma lista de instruções do servidor de escalonamento de projeto. As instruções passadas pelo escalonador dependem do PC, por exemplo, o escalonador não dará uma tarefa que requeira mais memória do que a disponível no PC. As instruções podem ser compostas por diferentes tarefas. Um projeto pode ter diversas aplicações e o servidor enviará tarefas de qualquer uma delas. 2. O PC faz o download do arquivo executável e do arquivo de dados de entrada que se encontram no servidor do projeto. Se o projeto liberar novas versões de suas aplicações, os arquivos executáveis serão automaticamente enviados para o PC. 3. O PC executa os programas aplicativos produzindo arquivos de saída. 4. O PC envia os arquivos de saída ao servidor de dados. 5. O PC comunica ao escalonador que terminou suas tarefas e obtém instruções para novas tarefas. O ciclo se repete
19 Crédito O servidor de projeto registra quanto cada participante contribuiu na realização das tarefas das aplicações, isto é chamado de crédito. O seguinte sistema é utilizado para atribuir créditos de maneira justa: Cada unidade de trabalho é enviada ao menos a dois PCs -Quando um computador relata seus resultados, ele pede uma certa quantidade de créditos baseado no tempo de utilização da CPU. -Quando pelo menos dois resultados são retornados ao servidor, este os compara. Se os resultados forem iguais, o servidor atribui o menor valor dos créditos reclamados
22 Os tipos de aplicação possíveis para sistemas distribuídos variam da resolução distribuída aos sistemas heterogêneos à sistemas multi-agentes. Nos primeiros, o desenvolvedor projeta exatamente como será a distribuição dos processos entre as máquinas e que parte do problema cada processo resolverá. No segundo, sistemas multi-agentes, são sistemas abertos e heterogêneos onde vários desenvolvedores desenvolvem agentes, softwares dotados de um certo grau de inteligência e, principalmente, de interação com outros agentes, capazes de interagirem e produzirem algum resultado útil ao usuário embora não tenha sido concebidos inicialmente com aquele objetivo específico. As definições seguintes foram extraídas de Resolução Distribuída de Problemas A RDP tem como base o problema que é modelado através de uma abordagem descendente (top-down). A solução do problema é previamente estruturada, e os agentes são desenvolvidos para atuarem conforme o esquema proposto para a solução. Isto significa dizer que grande parte do raciocínio sobre a solução é inserido no sistema pelo projetista, levando ao desenvolvimento de controles geralmente hierárquicos e centralizados
23 O slide ilustra uma decomposição de tarefa de renderização entre três processos. Os resultados parciais são coletados por um processo central que remonta a imagem. Fonte da imagem:
24 No documento fonte, a universidade de Purdue tem um grid para calcular renderização. Tipicamente uma renderização para um filme de 2 minutos utilizando o software Renderman da Pixar (provavelmente numa máquina desktop) leva 7200 minutos. Num DRE (Distributed Render Environment) isto leva 36 minutos
25 Sistemas multi-agentes A preocupação do projetista é desenvolver arquiteturas de agentes que interajam de forma autônoma e social, bem como desenvolver sistemas de comunicação e coordenação para que a solução surja através desta interação. Por esta razão, o problema em SMA é considerado através de uma abordagem ascendente (bottom-up) de desenvolvimento
26 Há uma série de serviços disponíveis na Web oferecidos de forma isolada. É possível integrar estes serviços num nível mais abstrato, do ponto de vista do cliente. Abordagens SOA (Service Oriented Architectura) utilizam o mesmo princípio, o da integração de serviços
28 Desempenho: uma coleção de computadores frequentemente é capaz de produzir melhor que um computador centralizado. Distribuição natural: algumas aplicações são naturalmente distribuídas e, portanto, a arquitetura de um sistema distribuído se adapta perfeitamente. Por exemplo, aplicações bancárias, CSCW, videoconferência, etc. Robustez: se uma das máquinas ou um link de um SD cai, o sistema ainda pode sobreviver? Escalabilidade: um sistema distribuído pode ser aumentado de forma incremental através da inclusão de novos servidores e clientes sem perda significativa de desempenho introduzida pelo controle e comunicação extras. Compartilhar recursos: alguns recursos caros podem ser compartilhados (ex. impressora cara), dados também podem ser compartilhados (dados bancários, dados de reserva de bilhetes aéreos). Comunicação entre humanos torna-se mais fácil
29 Um sistema distribuído deve tratar todos os aspectos mencionados nesta transparência
31 Aspectos importantes num sistema distribuído bancário: Acessos múltiplos (concorrentes) à mesma conta: vários usuários acessam a mesma conta ou um programa do próprio banco (ex. emissão de relatórios) acessa ao mesmo tempo em que usuários realizam transações. Transações bancárias podem envolver contas armazenadas em diferentes bancos ou localidades. O serviço deve ser transparente ao usuário não interessa se os dados de sua conta estão armazenados no banco 1 ou banco 2, a aplicação não deve em nenhum momento deixar transparecer aspectos internos do sistema O serviço deve ser confiável e seguro Bases de dados replicadas devem ser consistentes Tolerância a falhas
32 A camada de middleware esconde as diferenças das camadas inferiores de rede, sistema operacional e hardware. A maior parte dos middlewares são implementados sobre a camada dos protocolos Internet que, por sua vez, mascaram as diferenças das redes. Todos os middlewares lidam com as diferenças existentes nos sistemas operacionais e no hardware. Além de resolver os problemas de heterogeneidade, o middleware define um modelo computacional uniforme para a programação de aplicações distribuídas. São exemplos de modelos: invocação remota de objetos (RMI), notificação remota de eventos, acesso SQL remoto e processamento de transações distribuídas. Por exemplo, CORBA permite que um objeto chame um método de outro objeto remoto escondendo os detalhes ao programador: o fato de que a chamada é transformada numa mensagem, enviada ao receptor que devolve uma resposta passando pela rede
33 OMG: object management group IETF: Internet Engineering Task Force
34 Os dois primeiros problemas tem soluções baseadas em criptografia. Existem medidas contra os problemas que persistem, mas não são completamente tratáveis até o momento (Coulouris et al. 2003)
36 Falhas parciais significam que um componente do sistema falha enquanto os outros funcionam normalmente. Entretanto cada componente deve estar ciente que outros componentes podem falhar e como podem falhar para poder detectar e tratar estas falhas
37 Nem sempre é adequado esconder as falhas, as vezes é mais produtivo mostrá-las
38 Os tipos de transparência mais importantes são de acesso e localização. Um exemplo de falta de transparência de acesso seria um sistema que permitisse acessar arquivos locais através de uma interface gráfica e arquivos remotos somente através de ftp textual. URLs são transparentes quanto a localização utilizam o nome do domínio e não o endereço IP. Porém, não são transparentes quanto a mobilidade, pois não podemos mudar uma página de um domínio a outro porque links de outras páginas ainda apontariam para a localização antiga. Replicação pode ser utilizada para fins de aumento de desempenho ou aumento da disponibilidade do sistema
39 Exemplo de transparência de falhas: envio de , o servidor de envio tenta durante vários dias enviar o sem que o emissor saiba. Quando não consegue enviar, retorna o . Exemplo de transparência de mobilidade: quando uma pessoa telefona (celular) para outra, esta última fora da sua base, o emissor da chamada desconhece a localização do receptor. Há outros tipos de transparências que dizem respeito à transparência de falhas, desempenho e escala: Falhas: permite aos usuários e programas completarem suas tarefas apesar de falhas no hardware ou software Desempenho: o sistema pode ser reconfigurado para melhorar seu desempenho sem afetar a operação normal do mesmo. Escala: o sistema pode aumentar sem mudar a estrutura do sistema ou os programas das aplicações
40 Sistemas distribuídos são úteis para
Infra-estrutura de Software. Apresentação!
Apresentação! Ciência da Computação Professor: Carlos Ferraz Monitoria: em formação Horários: Segundas, 13-15h (D- 005), e Quintas, 15-17h (D- 004) Laboratório: G4, normalmente URL: hsp://www.cin.ufpe.br/~cagf/if677/2012-2