Sistemas Distribuídos: Conceitos, Desafios e Arquiteturas

Classificado em Computação

Escrito em em português com um tamanho de 8,56 KB

Conceitos de Sistemas Distribuídos

Definições:

“Um sistema distribuído é um conjunto de computadores independentes que se apresenta a seus usuários como um sistema único e coerente.”
“Um sistema distribuído consiste em vários computadores fazendo algo juntos.”

Características:

  • Conjunto de máquinas autônomas;
  • Interconectados por canais de comunicação;
  • Comunicação por troca de mensagens;
  • Independência de falhas.

Requisitos:

  • Alto grau de confiabilidade;
  • Alto grau de segurança e privacidade de informações;
  • Suportar concorrência de usuários;
  • Garantir tempo de resposta satisfatório;
  • Suportar massiva distribuição;
  • Suportar extensibilidade;
  • Suportar integração entre sistemas operados por diferentes organizações.

Exemplos:

  • Aplicações comerciais (reservas de bilhetes, bancos);
  • Aplicações Web / Internet (WWW).

Desafios:

  • Heterogeneidade: Hardware, Software, Redes, Sistemas Operacionais, Linguagens e implementações de diferentes fabricantes.
  • Abertura: Capacidade de um sistema poder ser estendido (em relação a hardware e software) e ser interoperável com outros sistemas.
  • Acesso a Recursos: Facilitar aos usuários e aplicações o acesso a recursos remotos e o compartilhamento de maneira controlada e eficiente (impressoras, computadores, dados).

Problema: Segurança (senhas, autenticação de usuários, spam).

Segurança:

  • Confidencialidade: Proteção contra acesso indevido;
  • Integridade: Proteção contra alteração ou corrupção;
  • Disponibilidade: Proteção contra impedimento de acesso.

Concorrência e Paralelismo:

  • Paralelismo: Processos executam simultaneamente em processadores diferentes;
  • Concorrência: Processos executam concorrentemente em um mesmo processador e acessam recursos comuns.

Extensibilidade: Reflete a capacidade de um sistema suportar o aumento da escala sem perda de eficiência.

  • Desafios: Controlar o custo dos recursos físicos; controlar perda de desempenho; evitar gargalos de desempenho.

Manipulação de falhas: Mecanismos devem ser desenvolvidos para garantir o correto funcionamento do sistema, mesmo na ocorrência de falhas.

Transparência: O sistema é visto como um todo e não como uma coleção de partes.

  • Objetivo: Ocultar que os processos e recursos estão fisicamente distribuídos por vários computadores, como a localização, migração, realocação, replicação, concorrência e falha.

Vantagens:

  • Pessoas, sistemas, organizações e dados são inerentemente distribuídos;
  • Compartilhamento de recursos;
  • Aumento da confiabilidade;
  • Aumento do desempenho;
  • Crescimento incremental;
  • Flexibilidade.

Desvantagens:

  • Sincronização;
  • Falhas;
  • Suporte à escalabilidade;
  • Segurança: pode afetar a consistência, desempenho, disponibilidade, etc.

Middleware: Uma coleção de computadores independentes que se apresenta para seus usuários como um sistema único. A camada de middleware se estende por várias máquinas e oferece a mesma interface a cada aplicação.

Tipos de Sistemas Distribuídos:

  • Sistemas de Computação
  • Sistemas de Informação
  • Sistemas Pervasivos

Sistemas de Computação:

  • Computação de Cluster
  • Computação em Grade
  • Computação em Nuvem

Computação de Cluster: São dois ou mais computadores trabalhando em conjunto para processar uma tarefa. Essas máquinas dividem entre si as atividades de processamento e executam este trabalho de maneira simultânea.

Programação paralela: É uma forma de computação em que vários cálculos são realizados simultaneamente, operando sob o princípio de que grandes problemas geralmente podem ser divididos em problemas menores, que então são resolvidos concorrentemente (em paralelo).

Computação em Grade: São recursos reunidos de diversos lugares diferentes, até mesmo de organizações diferentes, para permitir a colaboração.

Computação em Nuvem: É acessar aplicativos e realizar tarefas pela internet sem precisar instalar tais aplicativos no computador.

Sistemas de Informação:

Sistemas empresariais desenvolvidos para integrar diversas aplicações individuais, onde a interoperabilidade se mostrou “dolorosa”.

Transação aninhada: É uma transação que é dividida em subtransações. Exemplo: ao comprar um pacote de viagem na Decolar.com, a transação acessa dois bancos de dados independentes: o da companhia aérea e o do hotel.

Sistemas Pervasivos:

São sistemas que se comunicam entre si para resolver um problema.

  • Vantagem: Computação móvel;
  • Desvantagem: Instabilidade.

Processos e Threads:

Processos: Programa em execução que contém um único fluxo de execução.

Threads: Programa em execução com múltiplos fluxos de execução.

Um exemplo pode ser dado através de um jogo, onde o mesmo pode ser modelado com linhas de execução diferentes, sendo uma para desenho de imagem e outra para áudio. Threads podem comunicar-se através das variáveis globais do processo que as criou.

Vantagens das Threads:

  • Processo leve;
  • Capacidade de Resposta: A utilização do multithreading pode permitir que um programa continue executando e respondendo ao usuário mesmo se parte dele está bloqueada ou executando uma tarefa demorada. Por exemplo, enquanto um navegador Web carrega uma figura, ele permite a interação com o usuário;
  • Compartilhamento de Recursos;
  • Economia;
  • Desempenho.

O método start() requisita os recursos do sistema necessários para rodar a thread e chama o seu método run(). O método run() da interface Runnable é a "alma" de uma thread; é neste método que definimos o que a thread vai executar. É possível estender a interface Runnable ou a classe Thread.

Redes de Sensores:

Dispositivos que permitem obter informações sobre um fenômeno; deve suportar processamento de dados na rede.

  • Sensores com cooperação: Possuem banco de dados próprio e processador;
  • Sensores sem cooperação: Banco de dados centralizado.

Sockets:

Modelo orientado à troca de mensagens. O socket de um cliente possui um inputStream, que recebe do outputStream do servidor, e tem um outputStream que transfere tudo para o inputStream do servidor.

Arquiteturas de Sistemas Distribuídos:

Arquitetura de Distribuição Vertical:

  • Arquitetura em camadas: RPC;
  • Arquitetura baseada em objetos: RMI;
  • Arquitetura baseada em eventos: Componentes de publicação e entrega de clientes (Web Service).

Arquitetura de Espaço de Dados Compartilhado:

Componentes publicam em espaços de dados (persistentes) compartilhados. Exemplo: Servidor Web / Banco de Dados.

Arquitetura de Distribuição Horizontal:

Redes P2P (não conectam entre si).

  • Arquitetura Centralizada: Um servidor central controla as entradas e saídas de peers da rede. Exemplos: Napster / eMule.
  • Arquitetura Descentralizada: Não há elemento central; os nós são idênticos; ocorre inundação na rede. Exemplos: Gnutella / JXTA.
  • Arquitetura Híbrida: Supernós permitem o ingresso dos nós na rede, coordenação e indexação. Exemplos: Kazaa / BitTorrent.

Protocolos da Rede P2P:

  • SSL: Integridade de dados;
  • IPSEC: Camada de rede que protege os pacotes;
  • PKI: Túnel de comunicação que impede interceptação.

Entradas relacionadas: