Introdução aos Sistemas Distribuídos September 22, 2009 Sumário Definição Exemplos Vantagens Potenciais Objectivos Obstáculos
Aplicação Distribuída O que é? É 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 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: Host Host Application Host Application Channel Host Host
Exemplos? Sistemas de Computação Distribuída Cluster Computing Master node Compute node Compute node Compute node Management Parallel libs Component of parallel Component of parallel Component of parallel Local OS Local OS Local OS Local OS Remote access network Standard network High-speed network Grid Computing
Sistemas de Informação Distribuída Monitores de transacções Reply Server Transaction Client Requests Reply TP monitor Request Request Reply Request Server Reply Server Integração de aplicações empresariais Client Client Communication middleware Server-side Server-side Server-side Sistemas Ubíquos Sistemas de cuidados médicos Tilt sensor ECG sensor PDA Motion sensors Transmitter GPRS/UMTS External storage body-area network (a) body-area network (b) Redes de sensores Sensor network Operator's site Sensor data is sent directly to operator (a) Operator's site Each sensor can process and store data Query Sensor network Sensors send only answers (b)
Outros Sistemas/Aplicações Distribuídas. Sistema de ficheiros da FEUP. Web e a Internet Sistema de transporte de email. Aplicações peer-2-peer. P.ex. Gnutella. Sistemas de controlo de edifícios. (Home automation) Sistemas fly-by-wire, drive-by-wire. Redes de telecomunicações. Redes de caixas bancárias automáticas (ATMs). 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.
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. Scalability: Algumas Técnicas (1/2) Distribuição processamento: Client FIRST NAME MAARTEN LAST NAME VAN STEEN E-MAIL STEEN@CS.VU.NL 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 Check form (b) Process form dados: Generic Countries 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 pc24
Scalability: Algumas Técnicas (2/2) Algoritmos 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. 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.
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. 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.
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. Abertura Assenta em 2 aspectos: 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.
Sistemas Distribuídos baseados em Middleware Application Same programming interface Application Middleware Network OS Common protocol Middleware Network OS Obstáculos Acesso à memória: 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.
Distributed Computing Fallacies (Sun People) Premissas que nem sempre se verificam 1. The network is reliable. 2. Latency is zero. 3. Bandwidth is infinite. 4. The network is secure. 5. The topology does not change. 6. There is one administrator. 7. Transport cost is zero. 8. The network is homogeneous. O termo network não deve ser interpretado como a rede apenas. Leitura Adicional Capítulo 1 de Distributed Systems, 2nd Ed. Arnon Rotem-Gal-Oz, Fallacies of Distributed Computing Explained, http: //www.rgoarchitects.com/files/fallacies.pdf