Sistemas Distribuídos: Conceitos e Arquiteturas

Classificado em Computação

Escrito em em português com um tamanho de 6,35 KB.

Sistemas Distribuídos: Máquinas autônomas trabalhando em conjunto.

Características: Máquinas autônomas, comunicação por troca de mensagens, independência de falhas, ausência da sincronização de relógios.

Vantagens: Sistemas, pessoas e dados distribuídos, compartilhamento de recursos, crescimento incremental, aumento do desempenho e confiabilidade.

Desvantagens: Falhas, sincronização, segurança (pode implicar em desempenho, etc.).

Middleware: Conjunto de computadores que se apresentam ao usuário como um único sistema.

Middleware de comunicação: Abstração das bibliotecas e protocolos de comunicação.

Exemplos: RPC (chamada de procedimento remoto), RMI (invocação de método remoto), SOAP (RPC web).

Tipos de Sistemas Distribuídos: Sistemas de Informação, Sistemas de Computação (cluster, nuvem e grade), sistemas pervasivos.

Sistemas de Informação: Diversas aplicações empresariais individuais integradas em uma única aplicação.

Sistemas de Computação:

  • Cluster: Popular, preço acessível, homogêneo, rede local, programação paralela.
  • Grade: Heterogêneo, processamento e cálculos em redes distantes, normalmente interligados por VPN.
  • Nuvem: Utilização das capacidades de armazenamento e cálculo na internet, princípios da computação em grade, heterogeneidade.

Técnicas de Extensibilidade:

  • Distribuição: Dividir dados e cálculos entre máquinas.
  • Replicação: Fazer cópias disponíveis em várias máquinas.
  • Caching: Permitir que processos clientes acessem cópias locais.

Tipos de Transparência:

  • Acesso: Oculta diferenças na apresentação de dados e o modo de acesso (ex: SOs diferentes).
  • Localização: Oculta o lugar onde o recurso está localizado (ex: sites).
  • Migração: Oculta que um recurso pode ser movido para outra localização (ex: migração de servidor).
  • Realocação: Oculta que um recurso pode ser movido para outra localização enquanto em uso (ex: uso do notebook em rede wireless).
  • Replicação: Oculta que um recurso é replicado (ex: replicação de dados entre site de produção e contingência).
  • Concorrência: Oculta que um recurso pode ser compartilhado por usuários concorrentes (ex: acesso à mesma tabela no BD).
  • Falha: Oculta falha e recuperação do recurso (ex: try and catch (mascaramento), computação em cluster).

Concorrência (recurso único) x Paralelismo (recurso compartilhado)

Threads (programa em múltiplos fluxos) x Processos (programa em fluxo único)

Thread: Extends threads ou implements Runnable. Método run em comum. Método start aloca recursos e chama o método run.

Escalonador: Organiza a execução da thread.

Redes de Sensores: Dispositivos para obter informações do ambiente. Com cooperação (BD distribuído). Sem cooperação (BD centralizado).

Socket: É um conector, ou seja, mediador de comunicação entre componentes (cliente X servidor). Cliente possui input stream que recebe output stream do servidor e tem output stream que transfere tudo para o input stream do servidor.

Arquiteturas de Sistemas Distribuídos:

  • Vertical: Arquitetura em camadas (ex: RPC), arquitetura em objetos (ex: RMI), arquitetura orientada a eventos (ex: webservice).
  • Espaço de dados compartilhados: Componentes publicam em espaço de dados compartilhados (ex: servidor web).
  • Horizontal: (ex: Redes P2P).

Redes P2P:

  • Principal característica: Usuário pode realizar função de cliente e servidor ao mesmo tempo.
  • Principal objetivo: Transmissão de arquivos.
  • Arquitetura:
    • Centralizada: Servidor central controla peers.
    • Descentralizada: Não há elemento central, flood/inundação da rede.
    • Híbrida: Composta por diversos super nós.

Protocolos P2P:

  • SSL: Protege as informações transmitidas. Arquivos ficam invisíveis exceto para o destinatário, à prova de adulteração, integridade dos dados.
  • IPSEC: Protege o pacote transmitido na rede. Largamente utilizado em VPNs. Segurança vem do IP da estação ou do seu certificado.
  • PKI: Túnel de comunicação. Impede a interceptação. Padrão de criptografia e-commerce na internet.

Exemplos:

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(){}
}

Socket – Servidor

public class S {
    public static void main (String[]args) throws IOException{
        ServerSocket servidor = new ServerSocket(12345);
        Socket cliente = servidor.accept();
        Scanner teclado = new Scanner(cliente.getInputStream());
        while(teclado.hasNextLine()){
            System.out.println(teclado.nextLine());
        }
        cliente.close();
        servidor.close();
    }
}

Socket – Cliente

public class C {
    public static void main(String[]args) throws UnknownHostException, IOException{
        Socket cliente = new Socket"localhos",12345);
        PrintStream saida = new PrintStream(cliente.getOutputStream());
        Scanner teclado = new Scanner(System.in);
        while (teclado.hasNextLine()){
            saida.println(teclado.nextLine());
        }
        saida.close();
        teclado.close();
    }
}

Entradas relacionadas: