Post on 24-Aug-2020
Sistemas Distribuídos
● Conceito
● Aplicações
● Exemplos de sistemas distribuídos
● Relação dos sistemas distribuídos e as redes
● Tipos de Sistemas Distribuídos
Fonte: https://sites.google.com/site/firsistemasdistribuidos/
1
Sistemas Distribuídos
● Conceitos
● “Um sistema distribuído consiste de um
conjunto de computadores autônomos que
trabalham juntos para dar aparência de um
único sistema coerente”
● O objetivo principal é oferecer ao usuário uma
visão transparente e independente da estrutura
de rede e de hardware
2
Conceitos
● Comumente uma camada de software é responsável por obter
essa transparência.
● O usuário destes sistemas comumente vê apenas uma
aplicação executando remotamente
● O desenvolvedor dessa aplicação vê um recurso de rede que
pode ser utilizado
● Esse recurso pode ser
● Processamento
● Armazenamento
● Largura de Banda
● Serviços de banco de dados
● Serviços WEB 3
Histórico
4
Redes x Sistemas Distribuídos
● Redes de Computadores
● Sistemas interconectados, que utilizam um protocolo de
comunicação
● Podem ser ad hoc ou cliente/servidor
● LANs, MANs, WANs, PANs
● Sistemas Distribuídos
● Foco nas aplicações (ex: onde vamos utilizar?)
● Utiliza serviços oferecidos pelas redes de
computadores
● Rede de computadores descentralizada5
Aplicações
● É comum o uso de sistemas distribuídos em
aplicações que exigem grande poder de
processamento
● Historicamente os grandes centros de
processamento eram máquinas enormes
construídas para um único fim
● Hoje a maioria dos super-computadores é um
aglomerado de várias máquinas de médio porte
● Esses aglomerados são conhecidos como
clusters 6
Aplicações
● Os sistemas distribuídos permitem agrupar em
um único sistema, várias aplicações que
executam em computadores diferentes
● O crescimento das redes de computadores hoje
é exponencial, a cada dia agrega-se mais
serviços à rede
● Com um SD bem planejado é possível expandir
a capacidade dessa rede mais facilmente, sem
alterações nas aplicações atuais
7
Classes de Aplicações Distribuídas
8
Classes de Aplicações Distribuídas
9
Aplicações distribuídas para
aumento de desempenho
10
Aplicações distribuídas para
aumento de desempenho
11
Aplicações distribuídas para
aumento de desempenho
12
Cluster x Grid
Computação em Cluster Computação em Grid
Computadores fortemente acoplados
Computadores fracamente acoplados
Imagem de um sistema único Não há uma imagem única do sistema
Gestão centralizada Gestão distribuída
Usado para computação de alto desempenho e alta disponibilidade
Usado tanto para high-throughput computing (HTC) como para high-performance computing (HPC).
13
Exemplos de SDs
14
● Computação Móvel, Pervasiva e Ubíqua
● A computação móvel (ou nômade) é a execução de tarefas
computacionais enquanto o usuário está se deslocando de um
lugar a outro, ou visitando lugares diferentes de seu ambiente
usual.
● A computação pervasiva é a utilização de vários dispositivos
computacionais pequenos e baratos, que estão presentes nos
ambientes físicos dos usuários, incluindo suas casas, escritórios e
até na rua.
● A computação ubíqua é a junção da computação móvel com a
computação pervasiva, permitindo a comunicação à distância,
sem fio, com dispositivos que o usuário pode “vestir” (Ex: Google
Glass)
Exemplos de SDs:
Computação Pervasiva e Ubíqua
• Ubíqua: Aparelhos acoplados
ao corpo, como relógios de
pulso inteligente, com
funcionalidade semelhante à
de um PDA (Smartphone)
• Pervasiva: Dispositivos
incorporados em aparelhos,
como máquinas de
lavar,aparelhos de som de
alta fidelidade, carros,
geladeiras, etc15
Exemplos de SDs:Compartilhamento de Recursos e Web
16
Construção de SD
● Comumente existe uma camada de software
que oferece os serviços de um SD
● Essa camada de software se apresenta como
uma biblioteca para os desenvolvedores
● Ela pode também estar implementada no
próprio Sistema Operacional, o que permite
maior integração dos sistemas
● Quando a camada de software é separada é
comumente chamada de middleware17
Middleware
● O software que está no meio
18
Construção de um SD
● Criar um novo SD não é uma tarefa simples
● Como o objetivo é oferecer integração total dos
sistemas há muitos detalhes envolvidos:
● Sistemas Operacionais diferentes
● Representação de dados diferentes
● Padrões de codificação e comunicação diferentes
● Padrões e limitações da rede
● etc.
19
Exemplos
● Skydrive
● Dropbox
● Yahoo
20
Tipos de SD
● Há muitas classificações de Sistemas
Distribuídos
● Uma delas é como segue:
● Orientados a suporte de computação
● Orientados a processamento de informação
● Pervasivos
21
Características dos SDs
• Heterogeneidade
• Abertura (openness)
• Segurança
• Escalabilidade
• Tratamento de Falhas
• Concorrência
• Transparência
22
Características dos SDs:
Heterogeneidade
• Componentes heterogêneos devem ser
capazes de interoperar
• Sistemas Operacionais
• Arquiteturas de hardwares
• Arquiteturas de comunicação
• Linguagens de programação
• Interfaces de Software
• Medidas de segurança
• Representação da Informação
23
Características dos SDs:
Abertura (Openness)
• Um sistema que implementa suficientemente
especificações abertas para interfaces, serviços,
e outros padrões, de modo a possibilitar
portabilidade às aplicações com mínimas
alterações possíveis.
• Interfaces devem estar disponível publicamente
para que novos componentes possam ser
adicionados facilmente.
24
Características dos SDs:
Abertura (Openness)
• Diz-se que um sistema computacional é aberto
quando ele pode ser estendido e reimplementado
de várias maneiras.
• Determinada pelo grau com que novo serviços
podem ser adicionados e disponibilizados.
• Mecanismos de comunicação uniformes e
interfaces publicadas para acesso aos recursos
compartilhados.
25
Características dos SDs:
Segurança
• Os recursos são acessíveis aos usuários autorizados e
devem ser utilizados para a finalidade para a qual foram
projetados.
• Muitos recursos de informação que são mantidos em
sistemas distribuídos têm um alto valor intrínseco para
seus usuários, o que faz com que sua segurança seja de
extrema importância.
• A segurança de recursos de informação tem três
componentes
• Confidencialidade
• Integridade
• Disponibilidade.
26
Características dos SDs:
Segurança
• Confidencialidade
– Garantir que a informação seja acessível somente para aqueles que tenham a devida autorização
– Ex: ACLs (access control lists) para prover acesso autorizado às informações
• Integridade
– Qualidade de integro; estado do que não sofreu alteração ou degradação
– Garantir a precisão das informações e dos métodos de processamento aos quais ela é submetida
– Ex: Mudar o número da conta ou valor em dinheiro em um pedido27
Características dos SDs:
Segurança
• Disponibilidade
– Garantir que os usuários autorizados tenham
acesso às informações e ativos associados
quando necessário.
– Ex: ataques de negação de serviço Não-repúdio
• Não-repúdio
– Conceito de que a autoria de determinada
ação/operação não possa ser negada pelo seu
executor
– Ex: Assinatura digital28
Características dos SDs:
Segurança
• Mecanismos de Segurança
–Criptografia
• Ex: Blowfish, RSA
–Autenticação
• Ex: senha, autenticação de chave pública
–Autorização
• Ex: access control lists (ACL)
–Integridade
• Ex: SHA29
Características dos SDs:
Escalabilidade
• O trabalho envolvido no processamento de
qualquer requisição de acesso a um recurso
compartilhado independe do tamanho da rede.
• O sistema deve trabalhar eficientemente em
diferentes escalas, desde uma pequena
intranet até toda a Internet.
• Um sistema é descrito como escalável se
permanece eficiente quando há um aumento
significativo no número de recursos e no número de usuários.
30
Características dos SDs:
Escalabilidade
• O projeto de sistemas distribuídos escaláveis
apresenta os seguintes desafios:
– Controlar os custos dos recursos físicos
• O custo deve crescer linearmente com o tamanho do
sistema
– Controlar a perda de desempenho
– Impedir que os recursos de software se esgotem: IP de
32bits para IP de 128 bits
– Evitar gargalos de desempenho
• Utilizar algoritmos descentralizados (DNS centralizado para
o descentralizado)
• Técnicas: replicação, caching, servidores múltiplos31
Características dos SDs:
Tratamento de falhas• As falhas em um sistema distribuído são parciais, isto é,
alguns componentes falham, enquanto outros continuam
funcionando.
• Portanto, o tratamento de falhas é particularmente difícil,
e envolve as seguintes técnicas:
– Detecção de falhas
• Checksums, …
– Mascaramento de Falha
• Retransmissão de mensagem corrompidas, …
32
Características dos SDs:
Tratamento de falhas
• Técnicas:
– Tolerância a falhas
• Tratamento de exceções, timeouts,…
– Recuperação de falhas
• Mecanismos de Rollback,…
• Recuperação por software: manter dados permanentes
consistentes
– Redundância
• Redundância de hardware (Ex: banco de dados replicado em
diversos servidores)
• OBS: O assunto “Tratamento de Falhas será melhor abordado
em aulas subsequentes... 33
Características dos SDs:
Concorrência
• Tanto os serviços como os aplicativos fornecem
recursos que podem ser compartilhados pelos
clientes.
• O processo que gerencia um recurso compartilhado
poderia aceitar e tratar um pedido de cliente por vez,
mas isso limitaria o desempenho do tratamento de
pedidos.
• Portanto, os serviços e aplicativos geralmente
permitem que vários pedidos de cliente sejam
processados concorrentemente. 34
Características dos SDs:
Concorrência• Mais de um processo em execução a cada instante
– Utilização de Threads
– Atividades separadas de usuários
– Independência de recursos
– Localização de processos servidores em computadores distintos
• Acesso concorrente a recursos compartilhados requer
sincronização
• Prover e gerenciar acesso concorrente aos recursos
compartilhados:
– Escalonamento justo (Fair scheduling)
– Evitar deadlocks• OBS: O assunto “Concorrência será melhor abordado em aulas subsequentes...
35
Características dos SDs:
Transparência
• Esconder do usuário e do programador de aplicações a
separação de componentes em um sistema distribuído, tal
que este seja visto como um sistema centralizado
• Formas de transparência
– Acesso
– Localização
– Concorrência
– Replicação
– Falha
– Mobilidade
– Desempenho
– Escala36
Características dos SDs:
Transparência
• Transparência de Acesso
– Operações de acesso a objetos de informação são idênticas para
objetos locais e remotos.
– Exemplo: Operação de envio de uma mensagem eletrônica
especificando o destinatário através de seu endereço Internet.
• Transparência de Localização
– Acesso a um objeto ocorre sem que seja necessário o
conhecimento de sua localização.
– Exemplo: Operação de envio de uma mensagem eletrônica
especificando o destinatário através de seu endereço Internet.
37
Características dos SDs:
Transparência
• Transparência de Concorrência
– Processos operam concorrentemente usando objetos de
informação comuns sem interferência entre eles.
– Sistemas Centralizados (paralelismo lógico) e
Distribuídos (paralelismo físico).
• Transparência de Replicação
– Várias instâncias de um objeto de informação são usadas
sem requerer o conhecimento das réplicas pelos usuários
e aplicações.
– Exemplo: Lotus Notes38
Características dos SDs:
Transparência
• Transparência de Falha
– Mascaramento de falhas de hardware e software.
– Exemplo: retransmissão de mensagens, falha em nodo
do Web Server não deve derrubar todo Website.
• Transparência de Mobilidade
– Permite o movimento de recursos e clientes no sistema
sem afetar as operações dos usuários e aplicações
– Exemplo:Troca de servidor por outro em tempo de
execução; migração de processo de nodo para outro39
Características dos SDs:
Transparência
• Transparência de Desempenho
– Reconfiguração do sistema para melhorar o desempenho
conforme a carga varia.
– Exemplo: Adição/deleção dinâmica de componentes,
comutando de estruturas lineares para estruturas
hierárquica quando o número de usuários aumenta.
• Transparência de Escala
• – O sistema e as aplicações podem expandir em
escala sem requerer modificações na estrutura do
sistema ou nos algoritmos das aplicações. 40
Vantagens dos SDs
• Separação funcional
– Computadores com diferentes capacidades e
funcionalidades
• Ex: Armazenamento de dados e processamento de dados.
• Distribuição de recursos
– Informação
• Informações são criadas e mantidas por diferentes pessoas.
– Pessoa
• Computadores suportam trabalho colaborativo (equipes virtuais,
engenharia, cirurgia virtual)41
Vantagens dos SDs
• Balanceamento de carga
– Computação distribuída por diferentes computadores.
• Economia
– Melhor relação custo x benefício quanto ao desempenho
(supercomputador virtual).
• Tolerância a falhas
– Um problema em uma máquina não necessariamente
pára todo o sistema.
• Normalização
– Necessária à integração.42
Vantagens dos SDs
• Compartilhamento de recursos
– Base de dados e periféricos podem ser compartilhados.
• Disponibilidade e Confiabilidade
– Se uma máquina falha, o sistema permanece funcional.
– Backup de dados em diferentes locais (replicação).
• Escalabilidade
– Poder computacional adicionado de forma incremental.
43
Desvantagens dos SDs
• Desenvolvimento de aplicações é mais complexo
– Interconexão
• Um grande número de problemas de sistemas
acontece quando componentes que antes operavam
independentemente são interconectados.
– Interferência
• Dois componentes de um sistema, cada um com
comportamento razoável quando observados em
isolamento, podem exibir comportamento indesejável
quando combinados.44
Desvantagens dos SDs
• Desenvolvimento de aplicações é mais complexo
– Propagação de efeito
• “Efeito cascata” de falhas pode derrubar um sistema
inteiro se não houver cuidados no projeto.
– Escala
• Um sistema que funciona bem com 10 nós pode falhar
se crescer para centenas de nós.
45
Desvantagens dos SDs
• Desenvolvimento de aplicações é mais complexo
– Propagação de efeito
• “Efeito cascata” de falhas pode derrubar um sistema
inteiro se não houver cuidados no projeto.
– Escala
• Um sistema que funciona bem com 10 nós pode falhar
se crescer para centenas de nós.
46
Desvantagens dos SDs
• Pouca disponibilidade de ferramentas de suporte
(Ex: compiladores, middleware).
• Segurança: várias portas de entrada.
• Utilização de uma rede para comunicação
– Comunicação
• Tratamento e recuperação de mensagens.
– Segurança
• Compartilhamento de dados implica em esquemas especiais
para proteção de dados sigilosos.
47
Sistemas Distribuídos x
Sistemas Paralelos
48
Sistemas Paralelos
• Paralelismo: vários processos executando simultaneamente
em vários computadores, compartilhando memória ou não.
• Pseudo-paralelismo: vários processos compartilhando um
processador ou outros recursos de um computador: ilusão
de vários programas rodando simultaneamente (multitarefa).
49
Sistemas Paralelos:
Sistemas Multiprocessadores
• Sistemas Multiprocessadores baseados em
barramento
– Consiste em um número de CPUs (que pode ter alguma
memória local - cache) ligadas através de um barramento
– Memória compartilhada
50
Sistemas Paralelos:
Sistemas Multiprocessadores
• Sistemas Multiprocessadores baseados em switch
– Memória compartilhada
– Memórias são localizadas de um lado e os processadores
do outro
– Número de switches pode tornar custo do sistema
proibitivo
51
Sistemas Distribuídos:
Sistemas Multicomputadores
• Sistemas Multicomputadores baseado em
barramento
– Conjunto de CPUs com memória local trocando
mensagens através de um barramento
– Rede local ou CPUs conectadas com um barramento
rápido
– Sem memória compartilhada
52
Sistemas Distribuídos:
Sistemas Multicomputadores
• Sistemas Multicomputadores baseado em switch
– CPUs tem um certo número de conexões para outras
CPUs e mensagens são trocadas através de CPUs que
intermediam a comunicação, quando necessário
– Sem memória compartilhada
– Grid (a) e Hipercubo (b)
53