Sistemas Distribuídos: Conceitos, Características e Arquiteturas
Classificado em Computação
Escrito em em português com um tamanho de 12,62 KB
Sistema Distribuído
É um sistema composto por hardware e elementos de software que se intercomunicam por meio de mensagens, utilizando técnicas de transferência em redes locais ou remotas.
Aplicações Distribuídas
É um componente de software que está disponível em diferentes computadores e até mesmo em arquiteturas diferentes, fornecendo as interfaces necessárias para que o usuário interaja com um sistema particular.
Características de Sistemas Distribuídos
- Heterogeneidade
- Extensibilidade
- Segurança
- Escalabilidade
- Tratamento de Falhas
- Concorrência
- Transparência
Heterogeneidade
É uma característica que descreve a diversidade de componentes de hardware, software e comunicações que podem ser implementados em um sistema distribuído.
Aplica-se a:
- Redes
- Hardware do computador
- Sistemas Operacionais
- Linguagens de Programação
- Implementações por diferentes desenvolvedores
Extensibilidade
É a característica que determina se o sistema distribuído pode ser estendido de várias maneiras, podendo ser aberto ou fechado em relação às áreas de hardware ou software.
Segurança
Esta tem a responsabilidade global pela proteção de dados e está dividida em três componentes principais:
- Confidencialidade: proteção contra acesso não autorizado.
- Integridade: proteção contra alteração ou corrupção.
- Disponibilidade: proteção contra interferência que impede o acesso aos recursos.
Escalabilidade
Este recurso foca na eficácia ou no desempenho que um sistema distribuído pode ter diante de um aumento no número de recursos e até mesmo no número de usuários.
Ajuda a prevenir o esgotamento de recursos de software.
Tratamento de Falhas
Refere-se a várias técnicas, algoritmos e/ou procedimentos para detectar e prevenir falhas. Alguns desses tratamentos são:
- Detecção de falhas (Checksums)
- Mascaramento de falhas (Broadcast)
- Tolerância a falhas (Usuários tolerantes)
- Failover (Rollback)
- Redundância
Concorrência
Refere-se à possibilidade de acesso simultâneo ou frequente aos serviços oferecidos por um sistema distribuído.
Transparência
Concentra-se no funcionamento dos componentes de um sistema distribuído, visando facilitar o acesso do usuário, a simultaneidade e as réplicas, sem expor os detalhes das funções internas.
- Transparência de Acesso
- Transparência de Localização
- Transparência de Concorrência
- Transparência de Replicação
- Transparência contra Falhas
- Transparência de Mobilidade
- Transparência de Desempenho
- Transparência de Ampliação
Modelos de Arquitetura
- Camadas de Software
- Arquiteturas de Sistema
- Interfaces e Objetos
Modelo de Arquitetura
Refere-se à distribuição ou organização de seus elementos e às relações entre os próprios componentes.
Camadas de Software
Relacionadas à estruturação do software em camadas em um único computador.
Camadas
São processos, um ou vários, localizados no mesmo ou em diferentes computadores, que oferecem serviços e atendem a solicitações.
Plataforma
A camada inferior oferece serviços para as camadas superiores e sua implementação depende de cada computador.
Middleware
É uma camada de software cujo objetivo é mascarar a heterogeneidade e fornecer um modelo de programação conveniente para programadores de aplicativos.
Arquiteturas de Sistemas
- Cliente-Servidor: O servidor pode ou não estar no mesmo computador que o cliente. Tanto o servidor quanto o cliente podem operar simultaneamente.
- Serviços Prestados por Vários Servidores: Servidores podem dividir o conjunto de objetos que servem e distribuí-los entre si.
- Servidor Proxy e Cache: Cache é um repositório de objetos de dados usados recentemente.
- Processo Ponto a Ponto (Peer-to-Peer): Todos os processos executam tarefas semelhantes, interagindo cooperativamente como iguais em uma atividade ou computação distribuída, sem distinção entre clientes e servidores.
Interfaces de Processo e Objetos
É a especificação do conjunto de funções que podem ser invocadas sobre ele.
- Em linguagens orientadas a objeto, o processamento distribuído pode ser construído de forma mais orientada a objetos. Referências a esses objetos são passadas para outros processos, que podem acessar seus métodos remotamente.
- Este é o método utilizado pelo CORBA e Java RMI.
Outros Modelos Arquitetônicos
- Código Móvel: O código da aplicação, essencialmente, são chamados de agentes.
- Agente Móvel: Um programa que se move pela rede de um computador para outro, executando uma tarefa para um usuário.
- Redes de Computadores: O software aplicativo necessário é baixado de um servidor remoto (PCOS).
- Thin Clients (Clientes Leves): O cliente executa apenas a interface baseada em Windows, enquanto o aplicativo é executado em um servidor remoto, que é frequentemente muito poderoso (clusters multiprocessador, etc.).
Requisitos de Projeto para Arquiteturas Distribuídas
Performance
- Resposta: Para obter bons tempos de resposta, os sistemas devem ser compostos por poucas camadas de software e a quantidade de dados transferidos deve ser pequena.
- Produtividade: Trabalho por unidade de tempo.
- Balanceamento de Carga: Utilização de applets, vários servidores ou computadores para hospedar um único serviço.
Qualidade de Serviço (QoS)
- QoS é a capacidade dos sistemas de atender a esses limites.
- Satisfazer esses requisitos depende da disponibilidade de recursos no momento certo.
Aspectos de Confiabilidade
- Correção
- Tolerância a Falhas
- Segurança:
- Privacidade
- Integridade
- Disponibilidade
Tolerância a Falhas
Aplicações estáveis devem continuar a funcionar corretamente na presença de falhas de software, hardware e redes.
- É obtida através de redundância.
- Para tornar um protocolo de comunicação confiável, outras técnicas são usadas.
Segurança
- Pode ser vista como a necessidade de colocar dados sensíveis e outros recursos apenas em computadores equipados com mecanismos eficientes contra ataques.
Modelos Fundamentais
Modelo de Interação
Explora o desempenho e a dificuldade de estabelecer limites de tempo em um sistema distribuído.
Modelo de Falha
Tenta fornecer uma especificação precisa das falhas que podem ocorrer em processos e canais de comunicação.
Modelo de Segurança
Descreve as ameaças potenciais aos processos e canais de comunicação.