Arquitetura de Sistemas Distribuídos e Comunicação via Sockets
Classificado em Computação
Escrito em em português com um tamanho de 4,5 KB.
Camadas em Aplicações
Existem 3 camadas:
- Camada de apresentação (desktop, conexão TCP/IP);
- Camada de negócio (ou de aplicação) - conexão com banco de dados;
- Camada de acesso aos dados - servidor de dados.
Aplicação com 3 camadas:
- Ajuda a melhor distribuir os componentes de uma aplicação e reduz problemas de manutenção.
Problemas na arquitetura 3 camadas:
- Instalar a aplicação inicial nos desktops clientes;
- Dificuldade de instalar software em desktops fora do controle administrativo.
Solução:
- Adotar o browser como cliente universal;
- Dividir a camada de aplicação em duas: aplicação e web.
Arquitetura com Múltiplas Camadas
- Camada de apresentação;
- Camada Web;
- Camada de Aplicação;
- Camada de Dados.
Plataforma Robusta
- Acessada de qualquer lugar;
- Executada em máquinas remotas;
- Questões de segurança.
Definição de Sistema Distribuído
Um sistema distribuído é uma coleção de computadores autônomos conectados por uma rede e equipados com um sistema de software distribuído.
Onde Utilizar
- Rede de computadores em uma fábrica;
- Sistema de reserva de passagens aéreas;
- Serviços da Internet: Netnews, WWW.
Vantagens sobre o Sistema Cooperativo
- Melhor relação custo/benefício;
- Maior domínio de aplicações;
- Maior confiabilidade e disponibilidade.
Desvantagens
- Segurança pode ser comprometida: fácil acesso a dados e recursos reservados;
- Falta de software adequado.
Sistemas Operacionais de Rede
- Estações de trabalho conectadas por uma LAN;
- Cada estação tem seu próprio sistema operacional.
Sistemas Distribuídos Autênticos
- Gerenciamento de processos homogêneo;
- Sistema de arquivos homogêneo.
Sistemas Timesharing para Multiprocessadores
- Fila única de processos prontos para execução: melhor distribuição de carga.
Características Básicas de Sistemas Distribuídos
Compartilhamento de recursos
- Componentes de hardware: discos, impressoras, etc.;
- Componentes de software: arquivos, bancos de dados.
Extensibilidade (Openness)
- Extensões de hardware: periféricos, memória, interfaces de comunicação, etc.;
- Extensões de software: funções de SO, protocolos de comunicação.
Concorrência
- Mais de um processo em execução a cada instante:
- Atividades separadas de usuários;
- Independência de recursos.
Escalabilidade (crescimento gradativo suave)
Tolerância a falhas
Transparência
Comunicação Distribuída - Socket
Camadas de Rede
Aplicação / Transporte / Rede / Enlace / Física
Principais Características
- Protocolo da camada de transporte;
- Confiável;
- Detecção de erros;
- Complexo.
Socket: é um objeto que permite enviar e receber dados utilizando uma rede.
Servers: São computadores que disponibilizam serviços através de portas.
Passos para Estabelecer um Socket no Lado do Cliente
- Criar um socket com a chamada ao sistema socket();
- Conectar o socket ao endereço do servidor usando a chamada ao sistema connect();
- Enviar e receber dados. Existem vários meios de se fazer isto, mas o mais simples é usar as chamadas ao sistema read() e write().
Passos para Estabelecer um Socket no Lado do Servidor
- Criar um socket com a chamada ao sistema socket();
- Vincular o socket a um endereço usando a chamada ao sistema bind(). Para um socket servidor na Internet, um endereço consiste de um número de porta no host;
- Escutar por conexões com a chamada ao sistema listen().