Introdução aos Sistemas Distribuídos - FCUPfds/aulas/SD/1617/Apontamentos/introducao.pdf ·...

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

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