Sumário: Introdução aos SD (Uma) Definição dum sistema distribuído (SD). Exemplos de SDs. Potenciais vantagens de SDs. Objectivos no desenvolvimento de SDs. Dificuldades/obstáculos no desenvolvimento de SDs. Middleware e outras infraestruturas para desenvolver SDs. 1 O que é? Aplicação Distribuída É uma aplicação que consiste em 2 ou mais processos que executam em diferentes processadores que não partilham memória. Um corolário desta definição é: Os processos duma aplicação distribuída comunicam entre si através da troca de mensagens. Process Process 2
Comunicação Via Mensagens Uma mensagem é uma sequência de bits: O formato e o significado duma mensagem são especificados pelo protocolo de comunicação. O transporte duma mensagem dum processo fonte para o processo destino é assegurado por uma rede de comunicação: Application Application Channel 3 Exemplos? 4
Arquitecturas de Aplicações Distribuídas A maioria baseia-se na arquitectura cliente-servidor: Sistema de ficheiros. Aplicações de bases de dados. A Web. Outras usam uma arquitectura mais distribuída (peer-to-peer) Bittorrent. Aplicações do tipo Computer Supported Collaborative Work (CSCW). O sistema de correio electrónico. 5 Potenciais Vantagens Acesso a e partilha de recursos distribuídos geograficamente. Desempenho: possibilidade de mobilizar múltiplos computadores para resolver um problema. Expansibilidade (scalability): utilizadores (pessoas/processos); geográfica; administrativa. Disponibilidade e tolerância a falhas. 6
Scalability: Obstáculos Centralização: processamento; dados; algoritmos. Sincronismo da comunicação. Comunicação por difusão (broadcast). Segurança e (falta de) confiança. 7 Scalability: Algumas Técnicas (1/2) Distribuição: processamento: FIRST NAME MAARTEN LAST NAME VAN STEEN E-MAIL STEEN@CS.VU.NL Client N E T R A A M Server (a) Check form Process form Client Server FIRST NAME MAARTEN LAST NAME VAN STEEN E-MAIL STEEN@CS.VU.NL MAARTEN VAN STEEN STEEN@CS.VU.NL dados: Generic Check form (b) Countries Process form int com edu gov mil org net jp us nl Z1 sun yale acm ieee ac co oce vu Z2 eng cs eng jack jill keio nec cs Z3 ai linda cs csl flits fluit robot 8 pc24
Scalability: Algumas Técnicas (2/2) Alogritmos distribuídos: O estado global do sistema é desconhecido. As decisões são tomadas usando a informação disponível localmente. Avarias em alguns componentes não devem comprometer a correcção do algoritmo. Relógios se disponíveis podem não estar sincronizados. Comunicação assíncrona. Replicação e caches: + reduz latência da comunicação; + distribui o processamento; - levanta problemas de consistência. 9 Tolerância a Falhas: Obstáculos e Técnicas Detecção de falhas não é fácil: Não é possível distinguir um computador lento dum avariado. Pode não ser possível determinar se um servidor de facto executou uma operação antes dum crash. Chegar a acordo na presença de avarias nem sempre é possível (na teoria, e... na prática). De facto, é um corolário do anterior. Algumas técnicas usadas são: Transacções; Replicação. 10
Objectivos na Concepção duma Aplicação Distribuída Concretizar as vantagens mencionadas. Transparência (da distribuição): esconder de utilizadores e programadores de aplicações a natureza distribuída da aplicação. Abertura (Openness): 2 significados capacidade do sistema/aplicação ser implementado de maneiras diferentes; expansibilidade do sistema/aplicação no que respeita à sua funcionalidade. 11 Algumas Facetas da Transparência da Distribuição acesso acesso através das mesmas operações quer o recurso seja local ou remoto; localização acesso sem conhecimento da localização dos recursos; concorrência acesso como se os recursos não fossem partilhados; avarias acesso aos recursos independentemente da ocorrência de avarias; replicação acesso como se os recursos não fossem replicados. Há pelo menos dois níveis de transparência: em relação aos utilizadores; e em relação aos programadores de aplicações. 12
Grau de Transparência da Distribuição Too much of a good thing is a bad thing (ou, o que é de mais é erro). Nem sempre há interesse em esconder a localização dos recursos: Por exemplo, uma impressora. Esconder avarias na rede ou em computadores nem sempre é possível (em teoria e na prática): não é possível distinguir um computador lento dum avariado; pode não ser possível determinar se um servidor de facto executou uma operação antes dum crash. 13 Assenta em 2 aspectos: Abertura em interfaces bem definidos e públicos: garantindo a portabilidade das aplicações; em protocolos normalizados: garantindo a interoperabilidade. No mínimo, um sistema distribuído deverá ser independente da heterogeneidade do seu ambiente de execução, i.e.: plataformas (HW + SO); linguagens de programação. 14
Sistemas Distribuídos baseados em Middleware Application Same programming interface Application Middleware Common protocol Middleware Para que o middleware assegure transparência duma forma aberta, as interfaces têm que ser: completas; neutras. 15 Acesso à memória: Obstáculos tipicamente, apontadores só têm significado no espaço de endereçamento dum processo. Heterogeneidade. Garantir acordo ao nível semântico é bem mais difícil. Latência: IPC via rede tem uma latência muito maior do que no mesmo computador e normalmente não é majorável. Inexistência dum tempo global. Falhas parciais: Num sistema distribuído, alguns componentes podem falhar enquanto outros continuam a funcionar. 16
Outras (anteriores) Implementações Distributed Operating System Network Operating System Machine A Machine B Machine C Machine A Machine B Machine C Distributed applications Distributed applications Distributed operating system services services services services Network Network 17 Comparação entre Implementações Nota: De acordo com a definição dada, multiprocessadores não qualificam como uma plataforma para sistemas distribuídos, pelo que a 1 a coluna coluna serve apenas como termo de comparação. 18