Buscar

Aula 1 Sistemas Distribuidos

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 43 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 43 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 43 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Sistemas Distribuídos
Prof. Carlos Viana
Introdução
• A palavra "distribuídos" em termos tais 
como "sistema distribuído", 
"programação distribuída", e "algoritmo 
distribuído" originalmente se referia a 
redes de computadores onde os 
computadores individuais foram 
distribuídos fisicamente dentro de uma 
certa área geográfica.
Introdução
• Os termos são hoje 
utilizados em um sentido 
muito mais amplo, 
mesmo referindo-se a 
processos autônomos que 
são executados no 
mesmo computador físico 
e interagem uns com os 
outros por passagem de 
mensagens.
“Os serviços disponibilizados por um ambiente 
distribuído se caracterizam por serem 
provedores de serviços, disponibilizando os 
mesmos para que os usuários possam utilizá-los. 
Mas para que isto ocorra, um formato padrão 
deve ser compreensível para qualquer um que 
precise utilizá-los em um registro central que 
esteja disponível”.
(COULOURIS, 1998)
Definição
• “ Um sistema distribuído é um conjunto de
computadores independentes entre si que se
apresenta a seus usuários como um sistema
único e coerente” – Tanenbaum/Van Steen
Definição
• “Um sistema no qual componentes de 
hardware ou software estão localizados em 
computadores em rede que comunicam e 
coordenam as suas ações através da troca de 
mensagens” (Coulouris)
Definição
• “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)
Definição
• Aspectos relevantes na definição de 
Tanenbaum & van Steen:
– Computadores (processos) independentes;
– Sistema único: middleware;
Definição
• Podemos então caracterizar um Sistema 
Distribuído pelas seguintes propriedades:
– Constituído por múltiplos computadores 
(processos);
– Ligados por uma rede: 
• Portanto, não partilham memória;
• Comunicam-se apenas por mensagens;
– coordenam ações e cooperam entre si;
Sistemas Distribuídos x 
Redes de Computador
• A computação distribuída não é o mesmo que 
redes de comunicação:
– As redes preocupam-se com:
• O envio de mensagens de um ponto A para outro B;
• E não com o que se faz com a mensagem;
– A computação distribuída:
• Assume que existe alguma forma de enviar a mensagem, (o 
transporte da mensagem é assegurado pela rede de 
comunicação);
• Preocupa-se com as propriedades dessas mensagens;
• E como construir um sistema com o uso de mensagens;
Dificuldades
• Compartilhar:
–Dados;
–Processamento;
–Consistência;
• Descoberta:
–Como localizar os recursos;
–Uma vez encontrados, como usá-los?
• Modelos de programação:
–Complexidade e dimensão dos sistemas;
–Não-determinismo no seu funcionamento;
– Torna os modelos de programação 
necessariamente complexos;
Falhas nos Sistemas
• Sistema não distribuído:
– Quando falha, esta é total;
– Quando ocorre uma falha, sabemos que ocorreu;
– Uma estratégia de recuperação: re-iniciar;
• Sistema distribuído:
– A falha pode ser parcial (apenas em alguns 
elementos);
– A falha pode não ser conhecida;
– Uma estratégia para lidar com falhas;
Características dos Sistemas Distribuídos
Compartilhamento de Recursos
• “Recurso” caracteriza o conjunto de elementos que 
podem ser compartilhados de forma útil:
– Hardware: impressoras, discos;
– Software: arquivos, bancos de dados, compiladores;
• O compartilhamento reduz custos;
• Recursos fisicamente encapsulados em um dos 
computadores de um Sistemas Distribuídos só podem 
ser acessados por outros computadores através de 
comunicação;
• Cada conjunto de recursos de um tipo particular deve 
ser gerenciado por um programa (Gerenciador de 
Recursos) que oferece uma interface de comunicação;
Concorrência
• Concorrência e execução paralela existem em 
um Sistema Distribuído por causa de:
– As atividades separadas de usuários;
– A independência de recursos;
– A localização de processos em computadores 
separados;
Transparência
• Esconde do usuário e do programador 
de aplicação a separação de 
componentes em um Sistema 
Distribuído;
• O sistema é percebido como um todo, 
em vez de uma coleção de 
componentes independentes.
Tipos Mais Comuns de 
Transparência
• Acesso: Oculta diferenças na ocultação de dados e no modo 
de acesso a um recurso;
• Localização: Oculta o lugar onde o recurso está localizado;
• Migração: Oculta que um recurso pode ser movido para outra 
localização;
• Relocação: Oculta que um recurso pode ser movido para 
outra localização enquanto em uso;
• Replicação: Oculta que um recurso é replicado;
• Concorrência: Oculta que um recurso pode ser compartilhado 
por diversos usuários concorrentes;
• Falha: Oculta a falha e a recuperação de um recurso;
• “Em alguns anos, os homens 
estarão aptos a efetuar uma 
maior quantidade de 
comunicação utilizando uma 
máquina do que pessoalmente” 
J.C.R Licklider (1968)
Exemplos Sistemas Distribuídos
Internet
• Através de um protocolo de comunicação 
relativamente simples, é possível realizar trocas de 
arquivos com música, vídeo e demais tipos de dados 
com computadores localizados em várias partes do 
planeta. 
Processadores Multinúcleo
• Basicamente os processadores multinúcleos distribuem as 
tarefas entre os vários núcleos, o que dinamiza o 
processamento, esse conceito passou a ser utilizado após as 
empresas fabricantes de chips atingirem o clock máximo dos 
processadores, o que não possibilitava um aumento de 
produtividade do chips.
Cluster
• Talvez o exemplo que 
mais facilite o 
entendimento do 
conceito de sistemas 
distribuídos, por 
definição um sistema 
onde dois ou mais 
computadores 
trabalham de maneira 
conjunta para realizar 
processamento pesado. 
Cluster Beowulf
• Cluster Beowulf são clusters 
de desempenho escaláveis, 
baseados numa infraestrutura 
de hardware comum, rede 
privada e software 'open 
source' (Linux). O 'hardware 
comum' pode ser qualquer 
tipo de computador, 
significando que não é 
necessário usar equipamentos 
próprios para cluster, bastando 
utilizar equipamentos comuns 
a redes tradicionais e PCs.
Corba
• Tecnologia padrão de objetos e sistemas distribuídos, definido 
pelo OMG ( The object management group ). Mais de 700 
empresas participantes como: HP, IBM, etc... CORBA oferece 
grande portabilidade integrando, por exemplo, linguagem 
COBOL com outras com suporte a CORBA.
Computação Voluntária
• Esse tipo de sistema de computação distribuída, 
geralmente associado a grandes projetos científicos, 
utiliza a capacidade de máquinas ociosas espalhadas 
pelo mundo para processar grandes quantidades de 
informação.
Ponto a Ponto
• É uma arquitetura de sistemas distribuídos 
caracterizada pela descentralização das 
funções na rede, onde cada nó realiza tanto 
funções de servidor quanto de cliente.
Cliente/Servidor
• Implica um processamento 
cooperativo de requisições 
submetidas por um cliente 
para o servidor que as 
processa e retorna os 
resultados para o cliente. 
Neste modelo o 
processamento da 
aplicação é dividido entre 
o cliente e o servidor.
Grid
• A ideia deste modelo reside em coordenar os recursos 
computacionais do maior número possível de computadores 
de maneira descentralizada usando padrões, interfaces e 
protocolos abertos para oferecer alto desempenho com 
qualidade de serviços sob demanda ao usuário do grid e de 
maneira transparente.
Razões a favor de 
sistemas distribuídos
• Funcionalidades e capacidades distribuídas:
– clientes / servidores;
– Recebimento de informação / processamento;
• Domínio da aplicação intrinsecamente 
distribuído:
– Caixa de registo e sistema de inventário numa 
cadeia de supermercados;– Sistema de gestão de dados administrativos numa 
rede hospitalar;
• Desempenho:
– Distribuição de carga, dados e processamento;
– Permite distribuir tarefas de modo a optimizar o 
desempenho geral;
– Mais CPU´s, maior capacidade de processamento;
• Vantagem econômica: custo/performance;
• Expansibilidade (scalability):
– Utilizadores (e processos), dispersão física e administração;
• Disponibilidade e tolerância a falha;
Objetivos na concepção de um 
sistema distribuído
• Acessibilidade e partilha de recursos dispersos 
fisicamente.
• Transparência (da distribuição):
– Capacidade de esconder dos utilizadores a 
distribuição física dos recursos:
– A visão deverá ser de um sistema único e consistente
• Aberto:
– Capacidade de o sistema ser implementado de 
diferentes formas;
• Expansível (scalability);
Abertura de um sistema 
distribuído
• Deve ser capaz de interagir com outros sistemas 
abertos, independentemente do ambiente. 
• Para isso precisam de:
– Ter interfaces bem definidas e públicas;
– Suportar portabilidade das aplicações;
– Ser facilmente inter-operáveis;
• Deve ser independente da heterogeneidade do 
seu ambiente de execução:
– Plataformas (hardware + software);
– Linguagens de programação;
Middleware
• Middleware é uma camada adicional de 
software situada entre o nível de aplicação e o 
nível que consiste no sistema operacional. O 
Middleware tem o papel de interligar 
diferentes aplicações em diferentes sistemas 
operacionais em diferentes computadores.
Middleware
• Ele oculta da melhor maneira possível a 
heterogeneidade das plataformas nas 
aplicações. Por ser um software de 
conectividade, consiste de um conjunto de 
serviços disponíveis que permite que 
múltiplos processos, executando em uma ou 
mais máquinas, interajam através de uma 
rede. 
Middleware e abertura
• Um Sistema Distribuído 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;
Escala em sistemas 
distribuídos
• A expansibilidade de um sistema distribuído, 
envolve pelo menos 3 componentes:
– Dimensão: número de utilizadores e/ou processos;
– Dispersão geográfica: distância máxima entre nós;
– 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.:
– Realização de plataformas para computação Grid e 
computação na Cloud;
Técnicas para assegurar
scalability
• Minorar latência de comunicação: enquanto 
espera por uma resposta, faz outra coisa.
– Usar o mais possível comunicação assíncrona;
– Ter um handler separado para a resposta em espera;
– Dificuldade: Nem todas as aplicações encaixam neste 
modelo;
• Distribuição: dividir dados e computação por 
múltiplas máquinas.
– Deslocar computações para os clientes (Java applets);
– Descentralizar o serviço de nomes (DNS);
– Descentralizar os sistemas de informação (WWW);
• Replicação/Caching: tornar disponível em 
diferentes máquinas cópias dos dados.
– Replicação em servidores de ficheiros e bases de 
dados;
– Cópias de Web sites (mirrors);
– Web caches (em browsers e proxies);
– Caching de ficheiros (no servidor e no cliente);
Scalability: dificuldades
• A replicação e caching:
– Reduz latência da comunicação.
– Distribui processamento mas pode originar problemas 
de consistência.
• Modificar uma cópia torna-a diferente das 
demais:
– Manter a informação consistente, requer 
sincronização global em cada modificação;
– Assegurar sincronização global impede soluções de 
grande escala;
• Observações:
– Se pudermos tolerar alguma inconsistência, 
reduzimos a necessidade de sincronização 
global ;
–A tolerância de cópias não consistentes 
depende do tipo de aplicação;
Dúvidas

Continue navegando