Baixe o app para aproveitar ainda mais
Prévia do material em texto
Introdução aos Sistemas Distribuídos Fernando Silva Computer Science Department University of Porto, School of Sciences http://www.dcc.fc.up.pt/~fds Baseados no livro e slides de Andrew Tanenbaum e Maarten van Steen. Fernando Silva (DCC-FCUP) Introdução aos Sistemas Distribuídos 1 / 26 Definição para Sistema Distribuído Possíveis definições: “Um sistema constituído por um conjunto de computadores independentes visto pelos utilizadores do sistema como sendo um sistema coerente e único.” (Tanenbaum) “Um sistema no qual componentes de hardware ou software localizadas em computadores em rede comunicam e coordenam as suas acções através da troca de mensagens” (Coulouris) “Um sistema no qual a falha de um computador que nem sequer sabíamos existir, pode tornar o nosso computador não usável” (Lamport) Fernando Silva (DCC-FCUP) Introdução aos Sistemas Distribuídos 2 / 26 Definição para Sistema Distribuído (2) Aspectos relevantes na definição de Tanenbaum & van Steen: computadores (processos) independentes sistema único ⇒ middleware Local OS 1 Local OS 2 Local OS 3 Local OS 4 Appl. A Application B Appl. C Computer 1 Computer 2 Computer 4Computer 3 Network Distributed system layer (middleware) Fernando Silva (DCC-FCUP) Introdução aos Sistemas Distribuídos 3 / 26 Definição para Sistema Distribuído (3) Podemos então caracterizar um Sistema Distribuído pelas seguintes propriedades: constituído por múltiplos computadores (processos) ligados por uma rede I portanto, não partilham memória, I e comunicam apenas por mensagens coordenam acções e cooperam entre si Fernando Silva (DCC-FCUP) Introdução aos Sistemas Distribuídos 4 / 26 Sistemas distribuídos não são redes A computação distribuída não é o mesmo que redes de comunicação: As redes preocupam-se com I o envio de mensagens de um ponto A para outro B I e não com o que se faz com a mensagem A computação distribuída I assume que existe alguma forma de enviar a mensagem (o transporte da mensagem é assegurado pela rede de comunicação) I preocupa-se com as propriedades dessas mensagens I e como construir um sistema com o uso de mensagens Fernando Silva (DCC-FCUP) Introdução aos Sistemas Distribuídos 5 / 26 Algumas dificuldades na concretização de um SD Partilha I dados I processamento I consistência Descoberta I como localizar os recursos I uma vez encontrados, como usá-los? Modelos de programação I complexidade e dimensão dos sistemas I não-determinismo no seu funcionamento I torna os modelos de programação necessariamente complexos. Fernando Silva (DCC-FCUP) Introdução aos Sistemas Distribuídos 6 / 26 Falhas operacionais em sistemas Sistema não distribuído I quando falha, esta é total I quando ocorre uma falha, sabemos que ocorreu I uma estratégia de recuperação: re-iniciar Sistema distribuído I a falha pode ser parcial (apenas em alguns elementos) I a falha pode não ser conhecida I requer uma estratégia para lidar com falhas Fernando Silva (DCC-FCUP) Introdução aos Sistemas Distribuídos 7 / 26 Exemplos de Sistemas Distribuídos A Internet e a Web Sistema de ficheiros (áreas) dos alunos na FCUP Aplicações P2P: e.g. Napster, Gnutella, Freenet, Kazaa, Bittorrent, Skype, Computação voluntária: SETI@home, Folding@home, . . . (ver “distributed computing projects” na wikipedia) Sistema SIBS (Gestão de caixas bancárias automáticas) Sistemas de gestão de inventários em cadeias de supermercados Sistemas de gestão de saúde (SONHO do Min. Saúde) ... Arquitecturas: cliente-servidor e peer-to-peer Fernando Silva (DCC-FCUP) Introdução aos Sistemas Distribuídos 8 / 26 Razões a favor de sistemas distribuídos Funcionalidades e capacidades distribuídas I clientes / servidores I recolha de informação / processamento Domínio da aplicação intrinsecamente distribuído I caixa de registo e sistema de inventário numa cadeia de supermercados I sistema de gestão de dados administrativos numa rede hospitalar Desempenho: distribuição de carga, dados e processamento I permite distribuir tarefas de modo a optimizar o desempenho geral I mais CPUs, maior capacidade de processamento I vantagem económica: custo/performance Expansibilidade (scalability) I utilizadores (e processos), dispersão física e administração Disponibilidade e tolerância a falhas Fernando Silva (DCC-FCUP) Introdução aos Sistemas Distribuídos 9 / 26 Objectivos na concepção de um sistema distribuído Acessibilidade - tornar acessíveis recursos eventualmente dispersos fisicamente. Transparência (da distribuição) I capacidade de esconder dos utilizadores a distribuição física dos recursos I a visão deverá ser de um sistema único e consistente Aberto I capacidade de o sistema ser implementado de diferentes formas Expansível (scalability) Fernando Silva (DCC-FCUP) Introdução aos Sistemas Distribuídos 10 / 26 Transparência na distribuição Transparência Descrição Acesso Esconder diferenças na representação dos dados e como aceder a recursos Localização Esconder a localização dos recursos Migração Poder mudar um recurso sem afectar o modo como é acedido Recolocação Poder mudar a localização de recursos durante o seu uso Replicação Esconder a existência de múltiplas réplicas de um recurso (associado à transparência de localização) Concorrência Esconder a coordenação necessária para aceder a recursos partilhados e assegurar consistência Falhas Esconder falhas e possíveis recuperações de recursos Transparência é um objectivo em SDs, mas alcançá-lo é difícil. Fernando Silva (DCC-FCUP) Introdução aos Sistemas Distribuídos 11 / 26 Grau de transparência da distribuição Observação: pretender transparência completa pode ser pedir demais; nem sempre há interesse em esconder a localização dos recursos I e.g. a partilha de uma impressora por vezes é impossível esconder completamente falhas no sistema, I como distinguir um computador muito lento de uma falha, ou I como determinar se um servidor efectuou de facto uma operação antes de um crash? pode ter custos elevados no desempenho do sistema I manter uma cache Web actualizada com a cópia original, I transferir para disco as operações de escrita para assegurar tolerância a falhas Fernando Silva (DCC-FCUP) Introdução aos Sistemas Distribuídos 12 / 26 Abertura de um sistema distribuído Deve ser capaz de interagir com outros sistemas abertos, independentemente do ambiente. Para isso precisam de: I ter interfaces bem definidas e públicas I suportar portabilidade das aplicações I serem facilmente inter-operáveis Deve ser independente da heterogeneidade do seu ambiente de execução: I plataformas (hardware + software) I linguagens de programação Fernando Silva (DCC-FCUP) Introdução aos Sistemas Distribuídos 13 / 26 Middleware e abertura Num SD baseado num middleware aberto, os protocolos em cada camada do middleware têm de ser os mesmos, assim como as interfaces disponibilizadas às aplicações. Fernando Silva (DCC-FCUP) Introdução aos Sistemas Distribuídos 14 / 26 Escala em sistemas distribuídos A expansibilidade de um sistema distribuído, envolve pelo menos 3 componentes: I dimensão: número de utilizadores e/ou processos I dispersão geográfica: distância máxima entre nós I administração: número de domínios administrativos a grande maioria dos sistemas apenas olha à expansibilidade relacionada com a dimensão; hoje, os desafios são nas outras duas dimensões, e.g. I realização de plataformas para computação Grid e computação na Cloud Fernando Silva (DCC-FCUP) Introdução aos Sistemas Distribuídos 15 / 26 Técnicas para assegurar scalability Minorar latência de comunicação: enquanto espera por uma resposta, faz outra coisa: I usar o mais possível comunicação assíncrona I ter um handler separado para a respostaem espera I Dificuldade: nem todas as aplicações encaixam neste modelo. Distribuição: dividir dados e computação por múltiplas máquinas: I deslocar computações para os clientes (Java applets) I descentralizar o serviço de nomes (DNS) I descentralizar os sistemas de informação (WWW) Replicação/Caching: tornar disponível em diferentes máquinas cópias dos dados: I replicação em servidores de ficheiros e bases de dados I cópias de Web sites (mirrors) I Web caches (em browsers e proxies) I Caching de ficheiros (no servidor e no cliente) Fernando Silva (DCC-FCUP) Introdução aos Sistemas Distribuídos 16 / 26 Scalability: dificuldades A replicação e caching I reduz latência da comunicação I distribui processamento mas pode originar problemas de consistência I modificar uma cópia torna-a diferente das demais manter a informação consistente, requer sincronização global em cada modificação I assegurar sincronização global impede soluções de grande escala Observações: I se pudermos tolerar alguma inconsistência, reduzimos a necessidade de sincronização global I a tolerância de cópias não consistentes depende do tipo de aplicação Fernando Silva (DCC-FCUP) Introdução aos Sistemas Distribuídos 17 / 26 Falácias no desenvolvimento de sistemas distribuídos Premissas que nem sempre se verificam: A rede é fiável A rede é segura A rede é homogénea A topologia não muda A latência é zero A largura de banda é infinita O transporte de mensagens tem custo zero Não existe administrador Fernando Silva (DCC-FCUP) Introdução aos Sistemas Distribuídos 18 / 26 Tipos de sistemas distribuídos Sistemas distribuídos de computação Sistemas distribuídos de informação Sistemas distribuídos úbiquos Fernando Silva (DCC-FCUP) Introdução aos Sistemas Distribuídos 19 / 26 Sistemas distribuídos de computação Configurados para computação de elevado desempenho (HPC): Computação em clusters I nós homogéneos (mesmo OS e hardware quase idêntico) I um nó de administração Computação em Grid I nós heterogéneos I dispersos através de várias organizações e WANs Local OSLocal OS Local OS Local OS Standard network Component of parallel application Component of parallel application Component of parallel applicationParallel libs Management application High-speed network Remote access network Master node Compute node Compute node Compute node Sistemas distribuídos de informação Inúmeros SDs em uso são no essencial sistemas de informação tradicionais que integram sistemas antigos (legacy). E.g. sistemas transaccionais. BEGIN_TRANSACTION(server, transaction); READ(transaction, file-1, data); WRITE(transaction, file-2, data); newData := MODIFIED(data); IF WRONG(newData) THEN ABORT_TRANSACTION(transaction); ELSE WRITE(transaction, file-2, newData); END_TRANSACTION(transaction); END IF; Essencial: todas as operações READ e WRITE são executadas e o seu efeito é tornado permanente com a execução de END_TRANSACTION. Uma transacção constitui uma operação atómica. Fernando Silva (DCC-FCUP) Introdução aos Sistemas Distribuídos 21 / 26 Sistemas distribuídos de informação: transacções Transacção é um conjunto de operações sobre o estado de um objecto (e.g. base de dados) que satisfaz as propriedades (ACID): Atomicidade: as operações ou sucedem todas, ou falham todas. A falha de uma transacção falha, não afecta o estado do objecto. Consistência: estabelece sempre transições de estado válidas. Isolamento: as transacções não interferem umas com as outras. Durabilidade: depois da sua execução, o seu efeito é permanente. TP monitor Server Server Server Client application Requests Reply Request Request Request Reply Reply Reply Transaction Fernando Silva (DCC-FCUP) Introdução aos Sistemas Distribuídos 22 / 26 Integração de aplicações empresariais Usar um monitor para coordenar a execução de uma transacção, faz sentido, mas, em muitos casos, precisamos de separar a aplicação da base de dados sobre a qual intervém. Solução: usar mecanismos de comunicação entre aplicações: I Invocação remota de procedimentos (RPC) I Middleware orientado por mensagens (MOM) Server-side application Server-side application Server-side application Client application Client application Communication middleware Fernando Silva (DCC-FCUP) Introdução aos Sistemas Distribuídos 23 / 26 Sistemas Distribuídos Ubíquos A próxima geração de sistemas distribuídos terá nós pequenos e móveis integrados num sistema maior Alguns requisitos: Mudança de contexto: as alterações devem ser imediatamente reconhecidas. Composição ad-hoc: cada nó poderá ser usado de diferentes formas por diferentes utilizadores. Partilha é o default: os nós ligam-se e desligam-se, fornecendo partilha de serviços. Requer simplicidade. Observação: ubiquidade e transparência nem sempre casam bem. Fernando Silva (DCC-FCUP) Introdução aos Sistemas Distribuídos 24 / 26 SD úbiquos: exemplos Sistemas electrónicos de saúde: periféricos próximos da pessoa onde e como guardar os dados que estão a ser vigiados? como evitar perder dados cruciais? o que é preciso para propagar alertas? como assegurar segurança? como podem os médicos dar parecer online? body-area network body-area network ECG sensor Motion sensors Tilt sensor PDA Transmitter External storage GPRS/UMTS (a) (b) Fernando Silva (DCC-FCUP) Introdução aos Sistemas Distribuídos 25 / 26 SD úbiquos: exemplos Redes de sensores: os nós aos quais os sensores estão ligados são: muitos (10-1000) simples (i.e. quase sem memória, CPU, comunicação) operados a bateria Operator's site Sensor network Sensor data is sent directly to operator Operator's site Sensor network Query Sensors send only answers Each sensor can process and store data (a) (b) Fernando Silva (DCC-FCUP) Introdução aos Sistemas Distribuídos 26 / 26
Compartilhar