2 pontos por GN⁺ 2024-10-21 | Ainda não há comentários. | Compartilhar no WhatsApp

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.

Ainda não há comentários.