Guia Completo de Sistemas Distribuídos: Conceitos e Prática

Computação4,08 KB

O que são Sistemas Distribuídos

Um sistema distribuído é um conjunto de computadores independentes que se apresenta para o usuário como um único sistema coerente.

Características Principais

  • Conjunto de máquinas autônomas: Operam de forma independente.
  • Comunicação: Realizada através da troca de mensagens.

Requisitos

  • Alto grau de confiabilidade.
  • Alto grau de segurança e privacidade.
  • Suporte à extensibilidade.
  • Suporte à distribuição massiva.

Desafios

  • Heterogeneidade: Diferenças em hardware, software, sistemas operacionais e linguagens.
  • Abertura: Capacidade de extensão de software e hardware.
  • Acesso a recursos: Compartilhamento seguro e eficiente.
  • Segurança: Garantia de confidencialidade, integridade e disponibilidade.
  • Concorrência: Processos executando simultaneamente em recursos comuns.
  • Paralelismo: Processos executando simultaneamente em processadores diferentes.
  • Extensibilidade: Escalar sem perda de eficiência.
  • Manipulação de falhas: Funcionamento correto mesmo sob falhas.
  • Transparência: O sistema é visto como um todo, não como partes isoladas.

Vantagens e Desvantagens

Vantagens: Distribuição de pessoas, organizações e dados; aumento da confiabilidade e desempenho.
Desvantagens: Complexidade em falhas, sincronização e segurança, que podem afetar o desempenho.

Conceitos Relacionados

  • Middleware: Camada de software que abstrai a complexidade da rede.
  • Computação em Cluster: Computadores trabalhando em conjunto para processar tarefas subdivididas.
  • Programação Paralela: Divisão de grandes tarefas em problemas menores resolvidos simultaneamente.
  • Computação em Grade (Grid): Recursos reunidos de diversos locais para colaboração.
  • Computação em Nuvem: Acesso a aplicativos e recursos via internet.
  • Transação Aninhada: Transação dividida em subtransações (ex: Decolar.com).
  • Sistemas Pervasivos: Sistemas que se comunicam para resolver problemas (ex: computação móvel).

Threads e Sockets

Threads

Programas com múltiplos fluxos de execução. Vantagens: processo leve, desempenho e compartilhamento de recursos.

  • start(): Requisita recursos e chama o método run().
  • run(): Define a lógica de execução da thread.

Redes de Sensores

Dispositivos para coleta de dados. Podem ser cooperativos (com processamento local) ou não cooperativos (processamento centralizado).

Sockets

Modelo orientado à troca de mensagens via InputStream e OutputStream.

Arquiteturas de Sistemas Distribuídos

  • Vertical: Camadas (RPC), Objetos (RMI), Eventos (Web-services), Espaço de dados compartilhado.
  • Horizontal: Redes P2P (Centralizadas, Descentralizadas ou Híbridas).

Protocolos de Segurança P2P

  • SSL: Integridade de dados.
  • IPSEC: Proteção de pacotes na camada de rede.
  • PKI: Túneis de comunicação para evitar interceptação.

Exemplos de Código

// Exemplo de Thread
public class THREAD {
    public static void main(String[] args) {
        GeraPDF gerapdf = new GeraPDF();
        Thread threadDoPdf = new Thread(gerapdf);
        threadDoPdf.start();
    }
}
class GeraPDF implements Runnable {
    public void run() {}
}
// Exemplo Socket Servidor
ServerSocket servidor = new ServerSocket(12345);
Socket cliente = servidor.accept();

Baixar

PDF Word HTML