Resumo de Arquitetura de Software - Sistemas Distribuídos

Sistemas Distribuídos

Introdução a Sistemas Distribuídos

Sistemas Distribuídos são conjuntos de componentes autônomos interconectados, que se comunicam e coordenam ações para atingir um objetivo comum. Esses sistemas são caracterizados por transparência, escalabilidade e tolerância a falhas.

Características Principais

  • Concorrência: Múltiplos componentes executam tarefas simultaneamente.
  • Falhas independentes: Problemas em um componente não afetam necessariamente os outros.
  • Ausência de relógio global: Não há sincronização temporal perfeita entre os nós.
  • Heterogeneidade: Componentes podem usar hardware, software e protocolos diferentes.

Arquiteturas de Sistemas Distribuídos

  • Cliente-Servidor: Modelo centralizado onde clientes solicitam serviços a servidores.
  • P2P (Peer-to-Peer): Nós igualitários que atuam como clientes e servidores.
  • Baseada em serviços (SOA): Componentes oferecem serviços através de interfaces padronizadas.
  • Microsserviços: Aplicações como conjuntos de serviços independentes e especializados.

Desafios em Sistemas Distribuídos

  • Comunicação entre processos
  • Sincronização e coordenação
  • Tolerância a falhas
  • Segurança e autenticação
  • Balanceamento de carga
  • Consistência de dados (CAP Theorem)

Protocolos e Tecnologias

  • RPC (Chamada Remota de Procedimento)
  • HTTP/REST
  • Message Queues (RabbitMQ, Kafka)
  • Contêineres e Orquestração (Docker, Kubernetes)

Conceitos Importantes para Concursos

  • Transparência: Acesso, localização, migração, replicação, etc.
  • CAP Theorem: Escolha entre Consistência, Disponibilidade e Tolerância a Partições
  • Algoritmos de eleição (Bully, Ring)
  • Clock Vector (Lamport Timestamps)
  • Consenso Distribuído (Paxos, Raft)