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)