Você está na página 1de 28

Sistemas Distribuídos

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.

• Esconder falhas parciais e sua recuperação é muitas vezes muito difícil


e, em geral, impossível esconder.
Middleware: o sistema operacional de
sistemas distribuídos
• O que contém? Componentes e funções comumente usados que não
precisam ser implementados por aplicações separadamente.
O que queremos alcançar?

• Suporte para compartilhamento de recursos


• Transparência de distribuição
• Abertura
• Escalabilidade
• Heterogeneidade
• Segurança
Compartilhando recursos

• 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 rede é o computador” “The network is the computer”


(citação de John Gage, então na Sun Microsystems)
Transparência de distribuição
Transparência Descrição
Acesso Ocultar diferenças na representação de dados e como objeto é acessado
Localização Ocultar onde um objeto está localizado
Realocação Ocultar que um objeto pode ser movido para outro local enquanto em uso
Migração Ocultar que um objeto pode se mover para outro local
Replicação Ocultar que um objeto é replicado
Concorrência Oculte que um objeto pode ser compartilhado por vários usuários independentes
Falha Ocultar a falha e a recuperação de um objeto
Grau de transparência
• Visando a transparência da distribuição completa pode ser que:
• Há latências de comunicação que não podem ser ocultadas
• Ocultar completamente as falhas de redes e nós é (teoricamente e
praticamente) impossível.
• Você não consegue distinguir um computador lento de um defeituoso.
• Você nunca pode ter certeza de que um servidor realmente realizou uma operação
antes de um acidente.

• Transparência total vai custar desempenho, expondo a distribuição do


sistema.
• Manter réplicas exatamente atualizadas com o mestre leva tempo.
• Encerrando imediatamente as operações de gravação no disco para tolerância a
falhas.
Grau de transparência
• Expor a distribuição pode ser bom:
• Fazendo uso de serviços baseados em localização (encontrando seus amigos
próximos).
• Ao lidar com usuários em diferentes fusos horários.
• Quando fica mais fácil para um usuário entender o que está acontecendo
(quando por exemplo, um servidor não responde por um longo tempo, relate-
o como falhando).

Conclusão: Transparência de distribuição é um objetivo legal, mas conseguir é uma


história diferente, e muitas vezes não deve ser visado.
Abertura de sistemas distribuídos
Openness
• Sobre o que estamos conversando?
• Ser capaz de interagir com serviços de outros sistemas abertos,
independentemente do ambiente subjacente:
• Os sistemas devem estar em conformidade com interfaces bem definidas
• Os sistemas devem interoperar facilmente
• Sistemas devem suportar portabilidade de aplicativos
• Os sistemas devem ser facilmente extensíveis
Escalabilidade em sistemas distribuídos
• Muitos desenvolvedores de sistemas distribuídos modernos usam
facilmente o adjetivo “Escalável” sem deixar claro por que o sistema
realmente é dimensionado.
• Pelo menos três componentes:
• Número de usuários e / ou processos (escalabilidade de tamanho)
• Distância máxima entre nós (escalabilidade geográfica)
• Número de domínios administrativos (escalabilidade administrativa)

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.

• Problema: O desempenho da memória compartilhada distribuída


nunca poderia competir com o dos multiprocessadores e não atender
às expectativas dos programadores. Foi largamente abandonado até
agora.
Computação em cluster
• Essencialmente, um grupo de sistemas high-end conectados através
de uma LAN. Homogêneo: mesmo sistema operacional, hardware
quase idêntico Nó de gerenciamento único
Computação em Grade (Grid)
• O próximo passo: muitos nós de todos os lugares

• Heterogêneo
• Dispersado em várias organizações
• Pode facilmente expandir uma rede de longa distância

Atenção: Para permitir colaborações, as grades geralmente usam organizações


virtuais. Em essência, trata-se de um agrupamento de usuários (ou melhor:
seus IDs) que permitirá autorização para alocação de recursos..
Sistemas de informação distribuída
• Uma quantidade enorme de sistemas distribuídos em uso hoje em dia
são formas de sistemas de informação tradicionais, integrando
sistemas legados.
• Exemplo: sistemas de processamento de transações.
• Uma transação é um conjunto de operações sobre o estado de um
objeto (banco de dados, composição de objetos, etc.) que satisfazem
as seguintes propriedades ( ACID): Atomicidade, Consistência,
Isolamento, Durabilidade.
Sistemas distribuídos pervasivos
• Nova geração emergente de sistemas distribuídos nos quais os nós
são pequenos, móveis e muitas vezes incorporados em um sistema
maior, caracterizado pelo fato de que o sistema se mistura
naturalmente ao ambiente do usuário.
• Três subtipos (sobrepostos):
• Sistemas computacionais ubíquos: difundidos e continuamente presentes, ou
seja, há uma interação contínua entre sistema e usuário.
• Sistemas de computação móvel: difundidos, mas a ênfase está no fato de que
os dispositivos são inerentemente móveis.
• Redes de sensores (e atuadores): pervasivas, com ênfase na real
(colaborativo) sensoriamento e atuação do ambiente.
Sistemas ubíquos
• (Distribuição) Os dispositivos são ligados em rede, distribuídos e acessíveis
em maneira transparente.
• (Interação) Interação entre usuários e dispositivos é altamente discreta
• (Conhecimento de contexto) O sistema está ciente do contexto de um
usuário para otimizar a interação
• (Autonomia) Dispositivos operam de forma autônoma sem intervenção
humana, e são, portanto, altamente autogeridos
• (Inteligência) O sistema como um todo pode lidar com uma ampla gama de
ações dinâmicas e interações
Atenção: Ubíqua pretende designar sistemas cuja utilização está de tal
forma integrada na funcionalidade do produto que é transparente para o
utilizador.
Computação móvel
• Características distintas:
• Uma miríade de diferentes dispositivos móveis (smartphones, tablets,
dispositivos GPS, controles remotos, crachás ativos.
• Móvel implica que a localização de um dispositivo deve mudar ao longo do
tempo) mudança de serviços locais, alcançabilidade, etc. Palavra-chave:
descoberta.
• A comunicação pode se tornar mais difícil: não há rota estável, mas também
talvez não haja conectividade garantida) rede de tolerância a interrupções.
Redes de sensores
• Características:
Os nós aos quais os sensores estão conectados são:
• Muitos (10-1000)
• Simples (pequena capacidade de memória / computação / comunicação)
• Freqüentemente alimentado por bateria (ou mesmo sem bateria)
Redes de sensores com sistema
distribuído

Você também pode gostar