Escolar Documentos
Profissional Documentos
Cultura Documentos
Aula 2
Profª Vanice Canuto Cunha
IC – Instituto de Computação
Introdução: O que é sistema distribuído?
• Definição: Um sistema distribuído é uma coleção de elementos
computacionais autônomos que aparece aos seus usuários como um
único sistema coerente.
• Características:
• Elementos de computação autônoma, também chamados de nós, sejam eles
dispositivos de hardware ou processos de software.
• Sistema coerente único: os usuários ou aplicativos percebem um único
sistema) nós precisam colaborar .
Coleção de nós autônomos
• Comportamento Independente:
• Cada nó é autônomo e, portanto, terá sua própria noção de tempo: não há
relógio global. Leva a problemas fundamentais de sincronização e
coordenação.
• Coleção de nós:
• Como gerenciar a associação ao grupo?
• Como saber que você está de fato se comunicando (ou não) com um
membro autorizado?
Organização
• Rede de sobreposição: Cada nó na rede se comunica apenas com
outros nós no sistema, se forem seus vizinhos. O conjunto de vizinhos
pode ser dinâmico ou pode mesmo ser conhecido apenas
implicitamente (isto é, requer uma pesquisa).
• Tipos de sobreposição:
Exemplo bem conhecido de redes de sobreposição: sistemas peer-to-peer.
• Estruturado: cada nó tem um conjunto bem definido de vizinhos com quem
pode comunicar (árvore, anel).
• Não estruturado: cada nó tem referências a outros nós selecionados
aleatoriamente do sistema.
Sistema coerente
• Essência: A coleção de nós como um todo opera da mesma forma,
não importa onde, quando, e como ocorre a interação entre um
usuário e o sistema.
• Exemplos:
• Um usuário final não pode dizer onde um cálculo está ocorrendo.
• Onde os dados são armazenados exatamente deve ser irrelevante para um
aplicativo.
• Se os dados foram replicados ou não estão completamente escondidos.
• Palavra-chave é transparência de distribuição
O problema: falhas parciais
• É inevitável que a qualquer momento apenas uma parte do sistema
distribuído falhe.
• Exemplos:
• Armazenamento e arquivos compartilhados baseados em nuvem
• Streaming de multimídia assistido peer-to-peer
• Serviços de correio compartilhado (pense em sistemas de correio
terceirizados)
• Hospedagem compartilhada (pense em redes de distribuição de conteúdo)
Observação: A maioria dos sistemas conta apenas, até certo ponto, para escalabilidade
de tamanho. Muitas vezes solução: vários servidores poderosos operando
independentemente em paralelo. Hoje, o desafio ainda está na escalabilidade
geográfica e administrativa.
Escalabilidade de tamanho
• Causas principais para problemas de escalabilidade com soluções
centralizadas.
• A capacidade computacional, limitada pelas CPUs.
• A capacidade de armazenamento, incluindo a taxa de transferência entre
CPUs e discos.
• A rede entre o usuário e o serviço centralizado.
Heterogeneidade
• Um sistema distribuído pode possuir:
• diferentes tipos de rede
• diferentes tipos de hardware
• diferentes representações de dados, diferente código máquina)
• diferentes sistemas Operacionais
• diferentes interfaces para os protocolos de comunicação
• diferentes linguagens de programação (diferentes representações de
estruturas de dados como arrays ou registos,...)
Atenção: Para tentar resolver o problema da heterogeneidade define-
se uma camada de software intermédia: middleware
Segurança
Manter recursos computacionais seguros significa:
• Manter o nível de confidencialidade exigido pelos utilizadores
• (proteção contra acessos não autorizados)
• Garantir a integridade dos dados
• (proteção contra alteração ou corrupção de dados ou programas)
• Manter a disponibilidade do sistema
• (proteção contra interferências com os meios de acesso aos recursos)
Três tipos de sistemas distribuídos
• Sistemas de computação distribuída de alto desempenho
• Sistemas de informação distribuída
• Sistemas distribuídos para computação pervasiva
Computação paralela
• Computação distribuída de alto desempenho iniciada com
computação paralela.
Multiprocessador e multicore versus multicomputador
Sistemas de memória compartilhada
distribuída
• Os multiprocessadores são relativamente fáceis de programar em
comparação com multicomputadores, ainda tem problemas ao
aumentar o número de processadores (ou núcleos). Solução: Tente
implementar um modelo de memória compartilhada em cima de um
multicomputador.
• Heterogêneo
• Dispersado em várias organizações
• Pode facilmente expandir uma rede de longa distância