Introdução a Sistemas Distribuídos - ebaixar
Download
Report
Transcript Introdução a Sistemas Distribuídos - ebaixar
T. D. S. I. PARA WEB
Prof. Emmanuel Nolêto
[email protected]
Introdução
O que é um sistema
distribuído?
• São o conjunto de computadores utilizados por
usuários como se fosse um só.
• São uma extensão dos sistemas de redes onde
a interação inclui:
– Cooperação
• Todos por todos.
• Cada um com a sua tarefa.
– Colaboração
• Todos por um.
• Todos com a mesma finalidade.
Sistemas Distribuídos
• Onde se usa?
–
–
–
–
–
Redes
Hardware de computador
Sistemas Operacionais
Linguagens de programação
Implementações por diferentes programadores
• Soluções
– Middleware
– Máquinas virtuais (ex: Applets Java)
Sistemas Distribuídos
• Suporta o aumento dos recursos e
usuários mantendo um desempenho
satisfatório.
– Desafios:
•
•
•
•
Controlar o custo dos recursos físicos
Controlar a perda de performance (quantidade)
Prevenir esgotamento de recursos (ex: IP)
Evitar gargalos de performance (centralização)
Sistemas Distribuídos
Exemplo de um sistema
distribuido
Sistemas Distribuídos
• Exemplo de um web
service
Sistemas Distribuídos
• Exemplo de uma
intranet
Sistemas Distribuídos
• Exemplo de
dispositivos
portáteis
Sistemas Distribuídos
• A utilização dos dispositivos móveis para o acesso à
Internet está aumentando. De acordo com a comScore,
nos EUA, mais de 2,1 milhões de PCs, smartphones,
PDAs e outros dispositivos móveis utilizaram conexões
de banda larga para celulares para acessar a Web em
2007. Isso é mais do que o dobro de usuários do ano
anterior. Somente 1% dos usuários de Internet nos EUA
acessa, atualmente, a Web via banda larga móvel. Mas
espera-se que essa porcentagem continue a crescer,
conseqüentemente tornando os pontos de conexão WiFi irrelevantes
– [fonte: PC World (em inglês)].
Sistemas Distribuídos
• Crescimento do acesso em pequenos
dispositivos no Brasil
• Necessidade de desenvolver aplicações para
estes dispositivos
• Necessidade em adaptar as aplicações já
existentes.
• Criar uma mentalidade em utilizar mais
dispositivos portáteis do que os convencionais.
• Investimento em melhorias na tecnologia,
Sistemas Distribuídos
• SDs de diferentes tipos compartilham
importantes propriedades fundamentais
• Com esse compartilhamento podem sugir
problemas de projeto comuns.
• As propriedades comuns e as questões de
projeto para SDs serão abordadas na forma de
modelos descritivos.
• Um modelo descritivo é uma descrição abstrata,
simplificada, mas consistente de um aspecto de
projeto de sistema distribuído.
Sistemas Distribuídos
• Um Modelo Arquiteturial define o modo no qual os
componentes de sistemas interagem e como são
mapeados sobre uma rede de computadores.
• As localizações e as interações dos componentes são
determinadas pela estrutura em camadas do software
de SDs e pelo modelo arquitetura principal.
– Variantes do modelo Cliente/Servidor, incluindo aqueles devido
ao uso de código móvel.
– As características de um SD para o qual dispositivos móveis
podem ser adicionados ou removidos convenientemente.
– Requisitos de projeto gerais para SDs.
Sistema Distribuído
• A arquitetura em termos de componentes
especificados separadamente.
• A meta é garantir que a estrutura satisfará
as demandas presentes e futuras.
• Interesses importantes:
– tornar confiável
– gerenciável
– adaptável
– custo-efetivo (custo real).
Sistema Distribuído
• Principais modelos empregados em SDs:
– Multi Processador
– Cliente Servidor
– Cliente servidor em camadas
• Modelos são construídos em termos de processos ou de
objetos.
• Um modelo abstrai e simplifica as funções dos
componentes individuais e então considera:
– a colocação dos componentes através de uma rede
– Definir padrões úteis para a distribuição de dados e carga de
trabalho;
– as inter-relações entre os componentes de seus papéis e
padrões de comunicação.
Sistemas Distribuídos
Organização de um Sistema Distribuído.
Sistema Distribuído
• Hardware de mais baixo nível e camadas de software.
• Middleware
– Uma camada de software cujo propósito é mascarar
– heterogeneidade e prover um modelo de programação
– conveniente para programadores de aplicação.
– Processos ou objetos.
– Invocações de métodos, comunicações entre um grupo de
– processos, notificação de eventos, replicação de dados
– compartilhados e transmissão de dados multimídia em
tempo real.
– Java RMI (Remote Method Invocation)
– CORBA (Common Object Request Broker Architecture)
Acesso a recursos
•
•
•
•
•
•
Compartilhamento
Acesso
Economia
Segurança
Confiança nos serviços
Rastreamento
Transparência da distribuição
• Ocultar distribuição física
• Tipo de transparência
– Acesso
– Localização
– Migração
– Realocação
– Replicação
– Concorrência
– Falha
Transparência da distribuição
• Acesso
– Oculta a diferenciação de arquiteturas de
máquinas e sistemas
• Localização
– Não permitir que o usuário saiba a
localização da aplicação ou do servidor da
mesma.
• Migração
– Permitir que os recursos possam ser
mudados de local em tempo de execução.
Transparência da distribuição
• Realocação
– Recursos podem ser realocados em tempo de
execução.
• Replicação
– Não permitir que o usuário saiba que são feitas
cópias dos sistemas.
• Concorrência
– Não permitir que o usuário saiba que o sistema esta
sendo usado por muitos usuários ao mesmo tempo.
• Falha
– Questão mais difícil de se tratar. Devido a
quantidade de softwares e hardwares integrados.
Abertura
• Sistema que oferece regras e serviços
padronizados com regras.
• Definição de interfase
– Nomes de funções disponíveis, tipos de
parâmetros e valores de retorno
• Interoperabilidade
• Portabilidade
Escalabidade
• Tamanho
– Fácil adicionar novas máquinas e usuários
• Geograficamente
– Recursos podem esta distribuídos em
grandes distâncias
• Fácil gerenciamento
– Pode ser gerenciado mesmo estando em
servidores e locais diferentes.
Técnicas de escalabidade
• Ocultar latencias
– Evitar demora no tempo de resposta.
• Distribuição
– Dividir componentes para tornar o tempo de
resposta melhor, como o serviço de DNS.
• Replicação
– Equilibra as cargas entre os componentes,
amplia dispersão geográfica e pode ser
usado cache para facilitar a replicação.
Problemas de Escalabilidade
• O que distingue um algoritmo descentralizado
de um algoritmo centralizado?
– Nenhuma máquina tem informações completas sobre
o estado do sistema.
– As máquinas tomam decisões tendo como base
somente informações locais.
– A falha de uma máquina não arruína o algoritmo.
– Não há nenhuma premissa implícita quanto à
existência de um relógio global
Problemas de escabilidade
geográfica
• Impossível prover comunicação síncrona
para grandes distâncias;
• Comunicação em redes de longa distância
não é confiável e ponto a ponto;
• Soluções centralizadas atrapalham a
escalabilidade de tamanho.
Problemas de escalabilidade
administrativa
• Difícil estabelecer políticas de uso e
pagamento de:
– Recursos.
– Gerenciamento.
– Segurança.
Técnicas de Escalabilidade
Comunicação síncrona X assíncrona
Técnicas de escalabilidade distribuição
Principais ciladas
•
Premissas falsas adotadas ao desenvolver
uma aplicação distribuída pela primeira vez
–
–
–
–
–
–
–
–
A rede é confiável
A rede é segura
A rede é homogênea
A topologia não muda
A latência é zero
A largura da banda é infinita
O custo de transporte é zero
Há apenas um administrador
Tipos de Sistema Distribuído Cluster
Tipos de Sistema Distribuído
– Grade (grid)
Sistemas de Informação
Distribuídos
• Empacota várias requisições de programas clientes em uma
transação distribuída.
• EAI (Enterprise Application Integration)
• RPCs (Procedimentos remotos)
Propriedades das transações
•
•
•
•
•
Atômicas: para o mundo exterior, a
transação acontece como se fosse
indivisível.
Consistentes: a transação não viola
invariantes de sistema.
Isoladas: transações concorrentes não
interferem umas nas outras.
Duráveis: uma vez comprometida uma
transação, as alterações são permanentes
ACID (para facilitar a decoreba)
Exemplo de Transação Aninhada
Integração usando Monitor TP
Andrew S. Tanenbaum
Maarten Van Steen
Integração usando Middleware de
comunicação
Sistemas Distribuídos Pervasivos
•
Sistemas decorrentes do uso de computação
móvel e embutida, nas quais o comportamento
esperado é a instabilidade;
– Pequeno tamanho
– Alimentados por bateria;
– Comunicação sem fio;
•
Não possui controle administrativo humano,
podendo:
– Adotar mudanças contextuais
– Incentivar composição ad hoc
– Reconhecer compartilhamento como padrão
Sistemas Pervasivos - Exemplos
Sistemas para tratamento de Saúde
Sistemas Pervasivos - Exemplos
Redes de sensores sem fio
Questões
Sistemas Distribuídos
Sistemas Distribuídos
• Cite cinco tipos de recursos de hardware e
cinco tipos de recursos de dados ou
software que podem ser compartilhados.
Dê exemplos de como eles ocorrem em
Sistemas Distribuídos.
Sistemas Distribuídos
• Cite cinco tipos de recursos de hardware e
cinco tipos de recursos de dados ou
software que podem ser compartilhados.
Dê exemplos de como eles ocorrem em
Sistemas Distribuídos.
Resposta
• HW: discos, impressoras;
• Entidades definidas por software:
arquivos, bases de dados,objetos;
• Stream de frames de vídeo que emergem
de uma câmera de vídeo digital
• Conexões de áudio que uma chamada de
telefones móveis representa.
Sistemas Distribuídos
• Liste os três principais componentes de
software que podem falhar quando um
processo cliente requisita um método em
um servidor e dê um exemplo de uma
falha em cada caso.
Sistemas Distribuídos
• Discuta, utilizando suas palavras, as
características desejáveis em um sistema
distribuído.
Sistemas Distribuídos
•
Um sistema distribuído é definido como uma coleção de
computadores independentes que se apresenta ao
usuário como um sistema único e consistente. Baseado
nos conceitos definidos para sistemas distribuídos,
identifique a afirmativa ERRADA:
Sistemas Distribuídos
a) O modelo de computação distribuída Peer-to-Peer é uma tecnologia que estabelece uma espécie
de rede virtual de computadores, onde cada estação tem capacidades e responsabilidades
equivalentes.
b) Um sistema distribuído fortemente acoplado provê um nível de integração e compartilhamento de
recursos mais intenso e transparente ao usuário, onde vários processadores compartilham uma
memória, e são gerenciados por apenas um sistema operacional.
c) Um sistema distribuído fracamente acoplado permite que máquinas e usuários do ambiente sejam
fundamentalmente independentes, bem como a interação de forma limitada, quando isto for
necessário, compartilhando recursos como discos e impressoras, entre outros.
d) Uma vantagem dos sistemas distribuídos sobre os sistemas centralizados é a disponibilidade de
software para este tipo de ambiente.
e) Uma aplicação cliente-servidor é um caso especial de processamento distribuído no qual existe
uma forma de cooperação entre dois ou mais processos, sendo essa cooperação realizada
através de requisições dos componentes alocados ao cliente e das respostas que são fornecidas
pelos componentes alocados ao servidor.
Resposta
• Item D
Sistemas Distribuídos
Com relação a conceitos sobre sistemas distribuídos, assinale a opção
correta.
a) Em um sistema distribuído, os usuários podem acessar recursos em outras
máquinas, mas um sistema operacional distribuído não tem como tornar a
distribuição dos recursos transparente aos usuários.
b) Um sistema distribuído tem que ser tolerante a falhas. Para ser considerado
tolerante a falhas, tem que continuar a funcionar, sem degradação do
desempenho ou das funcionalidades, após as falhas.
c) Um sistema de arquivos distribuídos pode ser implementado sem manter
informações de estado. Nesse caso, as operações são tratadas
individualmente e não como partes de uma sessão.
d) Um sistema distribuído pode suportar a migração de processos. A migração
de processos não pode, entretanto, ocorrer sob controle de um sistema
operacional, tem que ser controlada por aplicações.
Resposta
• Item C
Sistemas Distribuídos
O objetivo de uma camada de Middleware em um sistema
multicamadas é:
a) oferecer componentes relacionados ao negócio para serem
utilizados na construção de aplicativos pelos engenheiros de
sistemas;
b) prover uma interface de acesso padrão a um sistema
operacional específico, de modo a disponibilizar os serviços
nele existentes a clientes em outras plataformas;
c) permitir acesso a dispositivos de hardware, como câmeras e
impressoras, através de uma API de alto nível;
d) cuidar de aspectos relacionados com a infraestrutura de rede,
definindo interfaces de comunicação com hubs e roteadores;
e) disponibilizar classes utilitárias e serviços independentes de
plataforma que permitam a obtenção de computação
distribuída em ambientes heterogêneos.
Resposta
• Item E