Lista de leitura sobre sistemas distribuídos
Introdução
- A parte mais difícil em sistemas distribuídos é mudar a forma de pensar.
- Esta lista reúne materiais úteis para promover essa mudança.
Materiais que estimulam o pensamento
- Coletânea de textos que oferece novas perspectivas sobre o design de sistemas em larga escala.
- Harvest, Yield and Scalable Tolerant Systems: aplicação prática da teoria CAP.
- On Designing and Deploying Internet Scale Services: design e implantação de serviços em escala de Internet.
- The Perils of Good Abstractions: a dificuldade de construir APIs/interfaces perfeitas.
- Chaotic Perspectives: imprevisibilidade e paralelismo em sistemas de grande escala.
- Data on the Outside versus Data on the Inside: duas abordagens para gerenciamento de dados.
- Memories, Guesses and Apologies: incerteza no processamento de dados.
- SOA and Newton's Universe: abordagem filosófica da arquitetura orientada a serviços.
- Building on Quicksand: construção de sistemas sobre bases instáveis.
- Why Distributed Computing?: a necessidade da computação distribuída.
- A Note on Distributed Computing: conceitos básicos de computação distribuída.
- Stevey's Google Platforms Rant: a experiência da plataforma SOA do Google.
Latência
- A existência da latência e como lidar com ela.
- Latency Exists, Cope!: impacto arquitetural da latência.
- Latency - the new web performance bottleneck: o novo gargalo de performance da web.
- The Tail At Scale: o problema da latência em sistemas de grande escala.
Amazon
- Conteúdos interessantes sobre a cultura e a organização da Amazon, mais do que sobre tecnologia.
- A Conversation with Werner Vogels: a transição para uma arquitetura baseada em serviços.
- Discipline and Focus: mais detalhes sobre a transição arquitetural da Amazon.
- Vogels on Scalability: a visão de Vogels sobre escalabilidade.
Google
- Tecnologias mais avançadas em sistemas distribuídos.
- MapReduce: modelo de processamento de dados em larga escala.
- Chubby Lock Manager: gerenciamento distribuído de locks.
- Google File System: sistema de arquivos em larga escala.
- BigTable: sistema de armazenamento distribuído.
- Data Management for Internet-Scale Single-Sign-On: gerenciamento de dados para single sign-on em escala de Internet.
- Dremel: análise interativa de conjuntos de dados em escala web.
- Large-scale Incremental Processing Using Distributed Transactions and Notifications: processamento incremental em larga escala usando transações distribuídas.
- Megastore: armazenamento escalável e altamente disponível para serviços interativos.
- Spanner: banco de dados distribuído global.
- Photon: junção de fluxos contínuos de dados.
- Mesa: sistema de data warehousing em tempo real.
Modelos de consistência
- Encontrar o equilíbrio entre consistência e disponibilidade no design de sistemas.
- CAP Conjecture: trade-off entre consistência, disponibilidade e tolerância a particionamento.
- Consistency, Availability, and Convergence: o limite superior da consistência.
- CAP Twelve Years Later: mudanças na teoria CAP.
- Consistency and Availability: a relação entre consistência e disponibilidade.
- Eventual Consistency: consistência eventual.
- Avoiding Two-Phase Commit: como evitar o commit em duas fases.
- 2PC or not 2PC, Wherefore Art Thou XA?: limitações do commit em duas fases.
- Life Beyond Distributed Transactions: gerenciamento de dados além das transações distribuídas.
- If you have too much data, then 'good enough' is good enough: o futuro de NoSQL e da teoria de dados.
- Starbucks doesn't do two phase commit: mecanismos assíncronos.
- You Can't Sacrifice Partition Tolerance: a importância da tolerância a particionamento.
- Optimistic Replication: abordagem de consistência frouxa.
Teoria
- Artigos que explicam elementos importantes do design de sistemas distribuídos.
- Distributed Computing Economics: economia da computação distribuída.
- Rules of Thumb in Data Engineering: regras práticas em engenharia de dados.
- Fallacies of Distributed Computing: falácias da computação distribuída.
- Impossibility of distributed consensus with one faulty process: teoria FLP.
- Unreliable Failure Detectors for Reliable Distributed Systems: detectores de falha para sistemas distribuídos confiáveis.
- Lamport Clocks: sincronização temporal em sistemas distribuídos.
- The Byzantine Generals Problem: o problema dos generais bizantinos.
- Lazy Replication: uso de semântica em serviços distribuídos.
- Scalable Agreement: ordenação como serviço.
- Scalable Eventually Consistent Counters over Unreliable Networks: contadores escaláveis em redes não confiáveis com consistência eventual.
Linguagens e ferramentas
- Problemas na construção de sistemas distribuídos usando tecnologias específicas.
- Programming Distributed Erlang Applications: construção de aplicações distribuídas com Erlang e OTP.
Infraestrutura
- Princípios robustos de gerenciamento de tempo na Internet.
Armazenamento
- Consistent Hashing and Random Trees: hashing consistente e árvores aleatórias.
- Amazon's Dynamo Storage Service: serviço de armazenamento da Amazon.
- Paxos Consensus: entendendo o algoritmo Paxos.
- The Part-Time Parliament: fundamentos do Paxos.
- Paxos Made Simple: explicação simples do Paxos.
- Paxos Made Live: perspectiva de engenharia sobre o Paxos.
- Revisiting the Paxos Algorithm: revisitando o algoritmo Paxos.
- How to build a highly available system with consensus: como construir um sistema altamente disponível com consenso.
- Reconfiguring a State Machine: reconfiguração de uma máquina de estados.
- Implementing Fault-Tolerant Services Using the State Machine Approach: implementação de serviços tolerantes a falhas usando a abordagem de máquina de estados.
Outros artigos sobre consenso
- Mencius: construção de máquinas de estado replicadas eficientes para WAN.
- In Search of an Understandable Consensus Algorithm: versão expandida do algoritmo RAFT.
Protocolos de gossip (Epidemic Behaviours)
- O poder dos protocolos de comunicação baseados em gossip.
- Astrolabe: tecnologia de monitoramento e mineração de dados para sistemas distribuídos.
- Epidemic Computing at Cornell: computação epidêmica na Universidade Cornell.
- Fighting Fire With Fire: superando limites de escalabilidade com gossip aleatório.
- Bi-Modal Multicast: multicast bimodal.
- ACM SIGOPS Operating Systems Review: redes baseadas em gossip.
- SWIM: protocolo escalável de associação a grupos de processos em estilo infeccioso, com consistência fraca.
P2P
- Chord: protocolo escalável de busca peer-to-peer para aplicações de Internet.
- Kademlia: sistema peer-to-peer de informações baseado na métrica XOR.
- Pastry: localização e roteamento distribuídos de objetos para sistemas peer-to-peer de grande escala.
- PAST: utilitário de armazenamento persistente peer-to-peer em larga escala construído sobre o Pastry.
- SCRIBE: infraestrutura de multicast distribuído em larga escala no nível da aplicação, construída sobre o Pastry.
Resumo do GN⁺
- Sistemas distribuídos são uma área que exige mudar a forma de pensar para resolver problemas complexos.
- Por meio de diversos materiais e artigos, esta lista oferece uma compreensão profunda sobre o design e a implementação de sistemas distribuídos.
- Esta lista aborda vários aspectos dos sistemas distribuídos, especialmente trazendo insights sobre modelos de consistência e problemas de latência.
- Pode ser um material útil para desenvolvedores ou pesquisadores interessados em sistemas distribuídos.
- Projetos com funcionalidades semelhantes recomendados incluem Apache Kafka e Apache Cassandra.
Ainda não há comentários.