Introdução aos Sistemas Distribuídos - FCUPfds/aulas/SD/1617/Apontamentos/introducao.pdf ·...
Transcript of Introdução aos Sistemas Distribuídos - FCUPfds/aulas/SD/1617/Apontamentos/introducao.pdf ·...
Introdução aos Sistemas Distribuídos
Fernando Silva
Computer Science DepartmentUniversity 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 computadoresindependentes visto pelos utilizadores do sistema como sendo umsistema coerente e único.” (Tanenbaum)“Um sistema no qual componentes de hardware ou softwarelocalizadas em computadores em rede comunicam e coordenam assuas acções através da troca de mensagens” (Coulouris)“Um sistema no qual a falha de um computador que nem sequersabí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) independentessistema ú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 seguintespropriedades:
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 BI e não com o que se faz com a mensagem
A computação distribuídaI 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 mensagensI 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
PartilhaI dadosI processamentoI consistência
DescobertaI como localizar os recursosI uma vez encontrados, como usá-los?
Modelos de programaçãoI complexidade e dimensão dos sistemasI não-determinismo no seu funcionamentoI 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ídoI quando falha, esta é totalI quando ocorre uma falha, sabemos que ocorreuI uma estratégia de recuperação: re-iniciar
Sistema distribuídoI a falha pode ser parcial (apenas em alguns elementos)I a falha pode não ser conhecidaI 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 WebSistema de ficheiros (áreas) dos alunos na FCUPAplicaçõ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 supermercadosSistemas 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ídasI clientes / servidoresI recolha de informação / processamento
Domínio da aplicação intrinsecamente distribuídoI caixa de registo e sistema de inventário numa cadeia de supermercadosI sistema de gestão de dados administrativos numa rede hospitalar
Desempenho: distribuição de carga, dados e processamentoI permite distribuir tarefas de modo a optimizar o desempenho geralI mais CPUs, maior capacidade de processamentoI 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 dispersosfisicamente.Transparência (da distribuição)
I capacidade de esconder dos utilizadores a distribuição física dosrecursos
I a visão deverá ser de um sistema único e consistenteAberto
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çãoAcesso Esconder diferenças na representação dos dados e como
aceder a recursosLocalização Esconder a localização dos recursosMigração Poder mudar um recurso sem afectar o modo como é
acedidoRecolocação Poder mudar a localização de recursos durante o seu usoReplicaçã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ênciaFalhas 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 impressorapor vezes é impossível esconder completamente falhas no sistema,
I como distinguir um computador muito lento de uma falha, ouI 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úblicasI suportar portabilidade das aplicaçõesI serem facilmente inter-operáveis
Deve ser independente da heterogeneidade do seu ambiente deexecuçã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 camadado middleware têm de ser os mesmos, assim como as interfacesdisponibilizadas à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 processosI dispersão geográfica: distância máxima entre nósI administração: número de domínios administrativos
a grande maioria dos sistemas apenas olha à expansibilidaderelacionada 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 naCloud
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 umaresposta, faz outra coisa:
I usar o mais possível comunicação assíncronaI ter um handler separado para a resposta em esperaI 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áquinascópias dos dados:
I replicação em servidores de ficheiros e bases de dadosI 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 cachingI reduz latência da comunicaçãoI distribui processamento
mas pode originar problemas de consistênciaI modificar uma cópia torna-a diferente das demais
manter a informação consistente, requer sincronização global emcada modificação
I assegurar sincronização global impede soluções de grande escalaObservações:
I se pudermos tolerar alguma inconsistência, reduzimos a necessidade desincronizaçã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ávelA rede é seguraA rede é homogéneaA topologia não mudaA latência é zeroA largura de banda é infinitaO transporte de mensagens tem custo zeroNã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çãoSistemas distribuídos de informaçãoSistemas distribuídos úbiquos
Fernando Silva (DCC-FCUP) Introdução aos Sistemas Distribuídos 19 / 26
Sistemas distribuídos de computaçãoConfigurados para computação de elevado desempenho (HPC):
Computação em clustersI nós homogéneos (mesmo OS e hardware quase idêntico)I um nó de administração
Computação em GridI nós heterogéneosI 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 tradicionaisque 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 seuefeito é 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. Afalha 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, fazsentido,mas, em muitos casos, precisamos de separar a aplicação da base dedados 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óveisintegrados num sistema maior
Alguns requisitos:Mudança de contexto: as alterações devem ser imediatamentereconhecidas.Composição ad-hoc: cada nó poderá ser usado de diferentes formaspor diferentes utilizadores.Partilha é o default: os nós ligam-se e desligam-se, fornecendopartilha 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 pessoaonde 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