CCT-UFCA/Ciência da Computação/Sistemas Distribuídos/Modelos e arquiteturas de sistemas distribuídos
Aparência
Arquitetura Cliente-Servidor
[editar | editar código]- A arquitetura cliente-servidor organiza o sistema em dois papéis principais:
- Cliente: Solicita serviços ou recursos.
- Servidor: Fornece os serviços ou recursos solicitados.
- Um servidor pode atender múltiplos clientes simultaneamente, mas cada cliente interage com um ou mais servidores para acessar recursos.
- Características:
- Centralização: O servidor centraliza os dados e serviços, facilitando a manutenção e controle.
- Escalabilidade: Limitações surgem à medida que mais clientes são adicionados, pois os recursos do servidor são finitos.
- Segurança: O servidor atua como um ponto de controle para autenticação e acesso.
Exemplo: Sistemas de banco de dados como MySQL e PostgreSQL seguem essa arquitetura. Cliente: Aplicativo que consulta ou atualiza dados. Servidor: Sistema de banco de dados que processa as solicitações SQL.
- Vantagens:
- Facilita o gerenciamento centralizado de recursos.
- Permite controle rígido sobre a segurança e a consistência dos dados.
- Desvantagens:
- Um único ponto de falha: se o servidor cair, os clientes ficam desconectados.
- Escalabilidade limitada devido à carga no servidor
Arquitetura Peer-to-Peer (P2P)
[editar | editar código]Na arquitetura P2P, todos os nós da rede têm funções equivalentes, atuando tanto como clientes quanto como servidores. Não há um servidor central, e os recursos são compartilhados entre os nós.
- Características:
- Descentralização: Não há dependência de um servidor central.
- Escalabilidade: A adição de novos nós aumenta a capacidade total do sistema.
- Robustez: A falha de um nó não compromete o funcionamento do sistema, desde que haja outros nós ativos.
Exemplo: Redes de compartilhamento de arquivos, como BitTorrent: Cada usuário (nó) pode baixar partes de um arquivo de outros usuários enquanto compartilha partes que já possui.
- Vantagens:
- Alta escalabilidade e resiliência a falhas.
- Menor custo de infraestrutura, pois não há necessidade de servidores centrais robustos.
- Desvantagens:
- Dificuldade em implementar mecanismos de segurança e controle de acesso.
- Pode haver latências altas em redes não otimizadas.
Arquitetura de Microsserviços
[editar | editar código]A arquitetura de microserviços divide um sistema em pequenos serviços independentes que realizam funções específicas. Cada microserviço é responsável por um conjunto limitado de tarefas e se comunica com outros por meio de APIs.
- Características:
- Modularidade: Cada microserviço é desenvolvido, implementado e escalado de forma independente.
- Flexibilidade: Permite o uso de diferentes tecnologias para cada microserviço.
- Isolamento de Falhas: Uma falha em um microserviço geralmente não afeta os demais.
Exemplo Prático: Uma loja virtual pode ser construída com microserviços separados: Serviço de Autenticação: Gerencia o login de usuários. Serviço de Catálogo: Exibe os produtos disponíveis. Serviço de Pagamentos: Processa transações financeiras. Cada serviço pode ser atualizado ou escalado individualmente.
- Vantagens:
- Permite maior agilidade no desenvolvimento e implantação.
- Facilita o uso de equipes menores e especializadas.
- Desvantagens:
- A complexidade aumenta devido à necessidade de gerenciar múltiplos serviços.
- Exige esforços extras em comunicação e orquestração entre microserviços.