Вы находитесь на странице: 1из 26

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

Computer 1 Computer 2 Computer 3 Computer 4

Appl. A Application B Appl. C

Distributed system layer (middleware)

Local OS 1 Local OS 2 Local OS 3 Local OS 4

Network

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 resposta em 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

Master node Compute node Compute node Compute node

Management Component Component Component


application of of of
parallel parallel parallel
Parallel libs application application application

Local OS Local OS Local OS Local OS

Remote access Standard network


network
High-speed network
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.

Server
Reply
Transaction Request
Requests
Request
Client Server
TP monitor
application
Reply
Reply
Request

Reply Server

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)

Client Client
application application

Communication middleware

Server-side Server-side Server-side


application application application

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?

Tilt sensor External


storage
ECG sensor Transmitter
PDA
GPRS/UMTS
Motion sensors

body-area network body-area network


(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
Sensor network

Operator's site

Sensor data
is sent directly
to operator

(a)

Each sensor
can process and Sensor network
store data
Operator's site
Query

Sensors
send only
answers
(b)

Fernando Silva (DCC-FCUP) Introdução aos Sistemas Distribuídos 26 / 26

Вам также может понравиться