Você está na página 1de 8

Motivação

● Crescente dependência dos usuários aos sistemas:


– necessidade de partilhar dados e recursos entre utilizadores;
– porque os recursos estão naturalmente em máquinas diferentes.
● Demanda computacional se torna maior do que os avanços de software e
hardware combinados;
● Algumas características inexistentes em sistemas centralizados como:
– tolerância a falhas;
– capacidade de escalabilidade;
– separação física;
– vantagens financeiras.

Vantagens de Sistemas Distribuídos

● Melhor relação custo/benefício;


● Maior capacidade de processamento;
● Maior confiabilidade e disponibilidade;
● Crescimento gradativo de capacidade;
● Compartilhamento de recursos:
– Hardware, software e dados.

Desvantagens de Sistemas Distribuídos

● Desenvolvimento de software adequado;


● Falhas e saturação da rede de comunicação:
– Podem eliminar as vantagens destes sistemas;
● Segurança pode ser comprometida:
– Acesso a dados e recursos reservados.

Características Básicas de Sistemas Distribuídos


● Compartilhamento de recursos
● Heterogeneidade
● Escalabilidade
● Transparência
● Concorrência
● Tolerância a falhas
● Segurança
Compartilhamento de Recursos

● Recurso:
– Termo abstrato e compreende tanto objetos de hardware, como discos e
impressoras, quanto entidades de software como arquivos e banco de dados;
● Motivações:
– Economia: compartilhamento de impressoras, supercomputadores, sistemas
de armazenamento, etc...
– Colaboração e troca de informações: arquivos, correio eletrônico,
documentos, áudio e vídeo, teleconferência, etc...

Heterogeneidade
● Variedade e diferença em termos de:
– Hardware;
– Sistemas operacional;
– Rede;
– Linguagem de programação;
– Implementações de diferentes desenvolvedores.
● Exemplos de heterogeneidade na Internet:
– Diferentes implementações do mesmo conjunto de protocolos para diferentes
tipos de rede: IP, TCP, UDP, SMTP;
– Diferentes padrões de representação de dados: IDL, XML;
– Diferentes padrões de bibliotecas: POSIX, DLL;
– Diferentes padrões de invocação de serviços: COM, CORBA,RMI, SOAP;
– Diferentes plataformas de execução: JVM (Java), CLR (.NET).

Escalabilidade
● Capacidade do sistema permanecer operando de forma efetiva mesmo
diante de um aumento significativo do número de usuários e/ou dos recursos
disponíveis;
● Principais desafios:
– Controlar o custo dos recursos físicos;
– Controlar perdas de desempenho;
– Evitar “gargalos” de desempenho na rede ou nos próprios servidores.
● Se uma quantidade maior de usuários ou recursos devem ser considerados
deve-se tomar cuidado com serviços, dados centralizados:

Conceito Exemplo
Serviços Centralizados: Um único servidor para todos os usuários
Dados Centralizados: Uma única lista telefônica online
Algoritmos Centralizados: Multiplicação de cadeias de Matrizes de maneira
seqüencial.

● Eles se tornam gargalos, pontos únicos de falhas e


saturam a rede onde residem.
Escalabilidade: Algoritmos Distribuídos
● Algoritmos distribuídos possuem as seguintes diferenças com relação aos
centralizados:
– Nenhum nó possui informação completa do estado do sistema;
– Cada nó toma decisões baseado somente em informações locais;
– A falha de um nó não inviabiliza a execução do algoritmo;
– Não se pressupõe a existência de um relógio global.

Escalabilidade: Algoritmos Distribuídos


● Método de comunicação entre processos:
– Memória compartilhada;
– Mensagens ponto-a-ponto;
– Difusão de mensagens (broadcast);
– Chamadas remotas a procedimentos (RPC).

Tolerância a falhas
● Falhas são inevitáveis em sistemas computacionais:
– Resultados incorretos;
– Interrupção não planejada do serviço antes de sua conclusão;
● Falhas em sistemas distribuídos são parciais;
● Técnicas de tratamento de falhas mais comuns:
– Detecção: bits de paridade, somas de verificação;
– Ocultamento: retransmissão de mensagens;
– Tolerância: informar o usuário do problema.

Transparência
● Abstração/Ocultação para os usuários e programadores de aplicação:
– Sistema percebido como um “todo” coerente ao invés de uma coleção de
partes independentes;

● Uma medida de sucesso de um sistema distribuído é dada pela sua


transparência:
– Em que medida é indistinguível de um sistema centralizado com a mesma
funcionalidade?

● Transparência de acesso:
– Permite o acesso a componentes remotos e locais através das mesmas
operações;
– Ex: Google Drive.
● Transparência de localização:
– Permite o acesso a componentes sem conhecimento da sua localização
física;
– Existência de um mecanismo que determina a localização baseada em um
nome;
– Ex: URL.

● Transparência de concorrência:
– Permite a execução concorrente de múltipla operações sobre o mesmo
conjunto de recursos sem causar interferência entre elas;
– Ex: Impressoras compartilhadas, leilão virtual.

● Transparência de escala:
– Permite a expansão do sistema e de suas aplicações sem exigir mudanças
significativas na infraestrutura existente;

● O sistema não possui gargalos

● Transparência de mobilidade (migração):


– Permite a realocação de recursos e aplicações sem afetar o seu uso.

● Transparência de Replicação:
– O usuário desconhece a existência de várias cópias do recurso;
– Fundamental para desempenho e tolerância a falhas.

● Transparência de falhas:
– A presença de falhas no sistema não é percebida pelos usuários;
– Implica na ausência de um ponto único de falha.
● Transparência de desempenho:
– Recurso adicionais são adicionados para suprir a nova demanda;
– Serviços oferecidos pela Amazon (elasticidade).

Concorrência
● Suporte para múltiplos acessos simultâneos a um ou mais recursos
compartilhados:
– Possibilidade de inconsistências quando os recursos são alterados

● Serviços devem garantir que as operações de acesso os mantenham em um


estado consistente
– Válido para servidores e objetos de aplicações

● Técnicas mais comuns:


– Sincronização de acesso (ex.: exclusão mútua distribuída)
– Protocolos de controle de concorrência (ex.: 2PC)

Segurança
● Proteção para recursos compartilhados:
– Confidencialidade (proteção contra usuários não autorizados):

● Ex.: Acesso a dados sobre salário, histórico médico;


– Integridade (proteção contra alteração e corrupção):

● Ex.: Alteração indevida de dados usados em transações bancárias;


– Disponibilidade (proteção contra interferência ao meio de acesso):

● Ex.: Queda ou sobrecarga do servidor ou do meio de comunicação;

● Principais mecanismos de segurança na Internet


– Firewall;
– Assinaturas digitais;
– Canais de seguros de comunicação.
Cuidado!
● Premissas falsas adotadas ao se desenvolve pela primeira vez uma
aplicação distribuída:
– Rede é confiável;
– Rede é segura
– Rede é homogênea;
– Topologia da rede não muda;
– Latência zero;
– Largura de banda é infinita.

Middleware
● Como suportar computadores e redes heterogêneos, oferecendo uma visão
de sistema único?
– Sistemas Distribuídos são organizados por meio de uma camada de
software.

Tipos de Sistemas Distribuídos


● Sistemas de Computação Distribuídos:
– Computação em Clusters;
– Supercomputadores;
– Computação em Grade (Grids);
– Computação em Nuvem (Cloud Computing);
● Sistemas de Informação Distribuídos;
● Sistemas Distribuídos Pervasivos.

Clusters
● Hardware consiste em um conjunto de estações de trabalho ou PCs
semelhantes;
● Conexão feita através de uma rede local;
● Em quase todos os casos, a computação de cluster é usada para
programação paralela na qual um único programa é executado em paralelo.

Supercomputadores
● Clusters altamente “tunados” usando processadores de prateleira
combinados a conexões de rede especiais e sistema operacional proprietário.
Grades Computacionais
● Computação em grade: muitos nós (clusters) de diversas origens e com
baixo acoplamento.
– Heterogêneos;
– Dispersos através de várias organizações;
● Recursos de diferentes organizações são reunidos para permitir a
colaboração de um grupo de pessoas ou instituições.

Sistemas Pervasivos
● Uma nova geração de sistemas distribuídos estão emergindo: sistemas de
computação móvel e pervasivos;
– Instabilidade é o comportamento esperado destes sistemas;
– Heterogeneidade de rede e de dispositivos;
– Problemas de segurança;
– Dispositivos de computação móveis e embutidos:
● Pequenos;
● Alimentação por bateria;
● Têm como objetivo a mobilidade;
● Se utilizam de conexão sem fio.

Exemplos de Sistemas Pervasivos


● Sistema pervasivo de monitoramento de saúde, usando (a) um hub local ou
(b) uma conexão sem fio para transmitir os dados coletados.
Computação em Nuvem
● Um (novo) paradigma da computação distribuída motivado pela:
– Economia de escala:
● O impacto combinado dessas economias de escala pode resultar em
economias em longo prazo de até 80% quando comparadas com estruturas
convencionais de hardware.
– Virtualização:
● Ao simular ambientes autônomos em uma mesma máquina física, diminui-se
a necessidade de hardware, de espaço físico e de energia. Além disso, os
servidores virtuais, por poderem ser facilmente movidos entre máquinas físicas,
favorecem a manutenção.
– Recursos dinamicamente escaláveis;
– Oferta e demanda através da Internet.
● Principais Nuvens
– Industria: Google App Engine, Amazon, Windows Azure, Salesforce.
– Academia: Magellan, FutureGrid.
– Middleware para nuvem: Nimbus, Eucalyptus, OpenNebula.

Referências
● Slides do Professor Flávio R. C. Sousa. “Introdução a Sistemas Distribuídos”.
Sistemas Distribuídos. Universidade Federal do Ceará.
● Slides do Professor Alexandre Nóbrega Duarte. “Introdução aos Sistemas
Distribuídos”. Computação Intensiva em Dados. Universidade Federal da
Paraíba.
● “Distributed Systems: Concepts and Design.” Third Edition. Coulouris, G.;
Dollimore, J.; Kindberg, T.

Você também pode gostar