T. D. S. I. PARA WEB Prof. Emmanuel Nolêto [email protected] Introdução O que é um sistema distribuído? • São o conjunto de computadores utilizados por usuários como se fosse um só. • São uma extensão dos sistemas de redes onde a interação inclui: – Cooperação • Todos por todos. • Cada um com a sua tarefa. – Colaboração • Todos por um. • Todos com a mesma finalidade. Sistemas Distribuídos • Onde se usa? – – – – – Redes Hardware de computador Sistemas Operacionais Linguagens de programação Implementações por diferentes programadores • Soluções – Middleware – Máquinas virtuais (ex: Applets Java) Sistemas Distribuídos • Suporta o aumento dos recursos e usuários mantendo um desempenho satisfatório. – Desafios: • • • • Controlar o custo dos recursos físicos Controlar a perda de performance (quantidade) Prevenir esgotamento de recursos (ex: IP) Evitar gargalos de performance (centralização) Sistemas Distribuídos Exemplo de um sistema distribuido Sistemas Distribuídos • Exemplo de um web service Sistemas Distribuídos • Exemplo de uma intranet Sistemas Distribuídos • Exemplo de dispositivos portáteis Sistemas Distribuídos • A utilização dos dispositivos móveis para o acesso à Internet está aumentando. De acordo com a comScore, nos EUA, mais de 2,1 milhões de PCs, smartphones, PDAs e outros dispositivos móveis utilizaram conexões de banda larga para celulares para acessar a Web em 2007. Isso é mais do que o dobro de usuários do ano anterior. Somente 1% dos usuários de Internet nos EUA acessa, atualmente, a Web via banda larga móvel. Mas espera-se que essa porcentagem continue a crescer, conseqüentemente tornando os pontos de conexão WiFi irrelevantes – [fonte: PC World (em inglês)]. Sistemas Distribuídos • Crescimento do acesso em pequenos dispositivos no Brasil • Necessidade de desenvolver aplicações para estes dispositivos • Necessidade em adaptar as aplicações já existentes. • Criar uma mentalidade em utilizar mais dispositivos portáteis do que os convencionais. • Investimento em melhorias na tecnologia, Sistemas Distribuídos • SDs de diferentes tipos compartilham importantes propriedades fundamentais • Com esse compartilhamento podem sugir problemas de projeto comuns. • As propriedades comuns e as questões de projeto para SDs serão abordadas na forma de modelos descritivos. • Um modelo descritivo é uma descrição abstrata, simplificada, mas consistente de um aspecto de projeto de sistema distribuído. Sistemas Distribuídos • Um Modelo Arquiteturial define o modo no qual os componentes de sistemas interagem e como são mapeados sobre uma rede de computadores. • As localizações e as interações dos componentes são determinadas pela estrutura em camadas do software de SDs e pelo modelo arquitetura principal. – Variantes do modelo Cliente/Servidor, incluindo aqueles devido ao uso de código móvel. – As características de um SD para o qual dispositivos móveis podem ser adicionados ou removidos convenientemente. – Requisitos de projeto gerais para SDs. Sistema Distribuído • A arquitetura em termos de componentes especificados separadamente. • A meta é garantir que a estrutura satisfará as demandas presentes e futuras. • Interesses importantes: – tornar confiável – gerenciável – adaptável – custo-efetivo (custo real). Sistema Distribuído • Principais modelos empregados em SDs: – Multi Processador – Cliente Servidor – Cliente servidor em camadas • Modelos são construídos em termos de processos ou de objetos. • Um modelo abstrai e simplifica as funções dos componentes individuais e então considera: – a colocação dos componentes através de uma rede – Definir padrões úteis para a distribuição de dados e carga de trabalho; – as inter-relações entre os componentes de seus papéis e padrões de comunicação. Sistemas Distribuídos Organização de um Sistema Distribuído. Sistema Distribuído • Hardware de mais baixo nível e camadas de software. • Middleware – Uma camada de software cujo propósito é mascarar – heterogeneidade e prover um modelo de programação – conveniente para programadores de aplicação. – Processos ou objetos. – Invocações de métodos, comunicações entre um grupo de – processos, notificação de eventos, replicação de dados – compartilhados e transmissão de dados multimídia em tempo real. – Java RMI (Remote Method Invocation) – CORBA (Common Object Request Broker Architecture) Acesso a recursos • • • • • • Compartilhamento Acesso Economia Segurança Confiança nos serviços Rastreamento Transparência da distribuição • Ocultar distribuição física • Tipo de transparência – Acesso – Localização – Migração – Realocação – Replicação – Concorrência – Falha Transparência da distribuição • Acesso – Oculta a diferenciação de arquiteturas de máquinas e sistemas • Localização – Não permitir que o usuário saiba a localização da aplicação ou do servidor da mesma. • Migração – Permitir que os recursos possam ser mudados de local em tempo de execução. Transparência da distribuição • Realocação – Recursos podem ser realocados em tempo de execução. • Replicação – Não permitir que o usuário saiba que são feitas cópias dos sistemas. • Concorrência – Não permitir que o usuário saiba que o sistema esta sendo usado por muitos usuários ao mesmo tempo. • Falha – Questão mais difícil de se tratar. Devido a quantidade de softwares e hardwares integrados. Abertura • Sistema que oferece regras e serviços padronizados com regras. • Definição de interfase – Nomes de funções disponíveis, tipos de parâmetros e valores de retorno • Interoperabilidade • Portabilidade Escalabidade • Tamanho – Fácil adicionar novas máquinas e usuários • Geograficamente – Recursos podem esta distribuídos em grandes distâncias • Fácil gerenciamento – Pode ser gerenciado mesmo estando em servidores e locais diferentes. Técnicas de escalabidade • Ocultar latencias – Evitar demora no tempo de resposta. • Distribuição – Dividir componentes para tornar o tempo de resposta melhor, como o serviço de DNS. • Replicação – Equilibra as cargas entre os componentes, amplia dispersão geográfica e pode ser usado cache para facilitar a replicação. Problemas de Escalabilidade • O que distingue um algoritmo descentralizado de um algoritmo centralizado? – Nenhuma máquina tem informações completas sobre o estado do sistema. – As máquinas tomam decisões tendo como base somente informações locais. – A falha de uma máquina não arruína o algoritmo. – Não há nenhuma premissa implícita quanto à existência de um relógio global Problemas de escabilidade geográfica • Impossível prover comunicação síncrona para grandes distâncias; • Comunicação em redes de longa distância não é confiável e ponto a ponto; • Soluções centralizadas atrapalham a escalabilidade de tamanho. Problemas de escalabilidade administrativa • Difícil estabelecer políticas de uso e pagamento de: – Recursos. – Gerenciamento. – Segurança. Técnicas de Escalabilidade Comunicação síncrona X assíncrona Técnicas de escalabilidade distribuição Principais ciladas • Premissas falsas adotadas ao desenvolver uma aplicação distribuída pela primeira vez – – – – – – – – A rede é confiável A rede é segura A rede é homogênea A topologia não muda A latência é zero A largura da banda é infinita O custo de transporte é zero Há apenas um administrador Tipos de Sistema Distribuído Cluster Tipos de Sistema Distribuído – Grade (grid) Sistemas de Informação Distribuídos • Empacota várias requisições de programas clientes em uma transação distribuída. • EAI (Enterprise Application Integration) • RPCs (Procedimentos remotos) Propriedades das transações • • • • • Atômicas: para o mundo exterior, a transação acontece como se fosse indivisível. Consistentes: a transação não viola invariantes de sistema. Isoladas: transações concorrentes não interferem umas nas outras. Duráveis: uma vez comprometida uma transação, as alterações são permanentes ACID (para facilitar a decoreba) Exemplo de Transação Aninhada Integração usando Monitor TP Andrew S. Tanenbaum Maarten Van Steen Integração usando Middleware de comunicação Sistemas Distribuídos Pervasivos • Sistemas decorrentes do uso de computação móvel e embutida, nas quais o comportamento esperado é a instabilidade; – Pequeno tamanho – Alimentados por bateria; – Comunicação sem fio; • Não possui controle administrativo humano, podendo: – Adotar mudanças contextuais – Incentivar composição ad hoc – Reconhecer compartilhamento como padrão Sistemas Pervasivos - Exemplos Sistemas para tratamento de Saúde Sistemas Pervasivos - Exemplos Redes de sensores sem fio Questões Sistemas Distribuídos Sistemas Distribuídos • Cite cinco tipos de recursos de hardware e cinco tipos de recursos de dados ou software que podem ser compartilhados. Dê exemplos de como eles ocorrem em Sistemas Distribuídos. Sistemas Distribuídos • Cite cinco tipos de recursos de hardware e cinco tipos de recursos de dados ou software que podem ser compartilhados. Dê exemplos de como eles ocorrem em Sistemas Distribuídos. Resposta • HW: discos, impressoras; • Entidades definidas por software: arquivos, bases de dados,objetos; • Stream de frames de vídeo que emergem de uma câmera de vídeo digital • Conexões de áudio que uma chamada de telefones móveis representa. Sistemas Distribuídos • Liste os três principais componentes de software que podem falhar quando um processo cliente requisita um método em um servidor e dê um exemplo de uma falha em cada caso. Sistemas Distribuídos • Discuta, utilizando suas palavras, as características desejáveis em um sistema distribuído. Sistemas Distribuídos • Um sistema distribuído é definido como uma coleção de computadores independentes que se apresenta ao usuário como um sistema único e consistente. Baseado nos conceitos definidos para sistemas distribuídos, identifique a afirmativa ERRADA: Sistemas Distribuídos a) O modelo de computação distribuída Peer-to-Peer é uma tecnologia que estabelece uma espécie de rede virtual de computadores, onde cada estação tem capacidades e responsabilidades equivalentes. b) Um sistema distribuído fortemente acoplado provê um nível de integração e compartilhamento de recursos mais intenso e transparente ao usuário, onde vários processadores compartilham uma memória, e são gerenciados por apenas um sistema operacional. c) Um sistema distribuído fracamente acoplado permite que máquinas e usuários do ambiente sejam fundamentalmente independentes, bem como a interação de forma limitada, quando isto for necessário, compartilhando recursos como discos e impressoras, entre outros. d) Uma vantagem dos sistemas distribuídos sobre os sistemas centralizados é a disponibilidade de software para este tipo de ambiente. e) Uma aplicação cliente-servidor é um caso especial de processamento distribuído no qual existe uma forma de cooperação entre dois ou mais processos, sendo essa cooperação realizada através de requisições dos componentes alocados ao cliente e das respostas que são fornecidas pelos componentes alocados ao servidor. Resposta • Item D Sistemas Distribuídos Com relação a conceitos sobre sistemas distribuídos, assinale a opção correta. a) Em um sistema distribuído, os usuários podem acessar recursos em outras máquinas, mas um sistema operacional distribuído não tem como tornar a distribuição dos recursos transparente aos usuários. b) Um sistema distribuído tem que ser tolerante a falhas. Para ser considerado tolerante a falhas, tem que continuar a funcionar, sem degradação do desempenho ou das funcionalidades, após as falhas. c) Um sistema de arquivos distribuídos pode ser implementado sem manter informações de estado. Nesse caso, as operações são tratadas individualmente e não como partes de uma sessão. d) Um sistema distribuído pode suportar a migração de processos. A migração de processos não pode, entretanto, ocorrer sob controle de um sistema operacional, tem que ser controlada por aplicações. Resposta • Item C Sistemas Distribuídos O objetivo de uma camada de Middleware em um sistema multicamadas é: a) oferecer componentes relacionados ao negócio para serem utilizados na construção de aplicativos pelos engenheiros de sistemas; b) prover uma interface de acesso padrão a um sistema operacional específico, de modo a disponibilizar os serviços nele existentes a clientes em outras plataformas; c) permitir acesso a dispositivos de hardware, como câmeras e impressoras, através de uma API de alto nível; d) cuidar de aspectos relacionados com a infraestrutura de rede, definindo interfaces de comunicação com hubs e roteadores; e) disponibilizar classes utilitárias e serviços independentes de plataforma que permitam a obtenção de computação distribuída em ambientes heterogêneos. Resposta • Item E