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.