2 pontos por GN⁺ 2024-10-21 | 1 comentários | Compartilhar no WhatsApp
  • A chave para aprender sistemas distribuídos está mais na mudança de mentalidade do que em uma tecnologia específica, e esta lista acompanha por tema os problemas que surgem ao projetar sistemas em escala de internet
  • Os materiais se dividem em filosofia de projeto, latência, casos de sistemas de grande escala da Amazon e do Google, modelos de consistência, teoria, ferramentas, infraestrutura, armazenamento, algoritmos de consenso, protocolos de gossip e P2P
  • CAP, evitar 2PC, eventual consistency e replicação otimista mostram os trade-offs operacionais de que é difícil maximizar consistência e disponibilidade ao mesmo tempo
  • A coletânea de artigos do Google oferece casos de implementação de sistemas distribuídos em grande escala como MapReduce, Chubby, GFS, BigTable, Dremel, Spanner, Photon e Mesa, enquanto os materiais da Amazon também tratam da transição para arquitetura orientada a serviços e da cultura organizacional
  • Lendo em sequência de Paxos, Raft, FLP, Relógios de Lamport, Generais Bizantinos, Chord, Kademlia e Pastry, é possível organizar em um único fluxo os problemas de consenso, tempo, replicação e roteamento

Mentalidade e perspectiva de projeto

Latência e serviços em escala de internet

Artigos sobre sistemas do Google e modelos de consistência

  • A coletânea do Google reúne em um só lugar artigos sobre sistemas de grande escala que podem ser vistos como a “rocket science” dos sistemas distribuídos, de MapReduce até Mesa
    • MapReduce
    • Chubby Lock Manager
    • Google File System
    • BigTable
    • Dremel: análise interativa de conjuntos de dados em escala web
    • Megastore: projeto para implementação de Paxos de baixa latência entre datacenters
    • Spanner: banco de dados do Google escalável, multiversão, distribuído globalmente e com replicação síncrona
    • Photon: junções tolerantes a falhas e escaláveis de fluxos contínuos de dados
    • Mesa: data warehouse georreplicado, quase em tempo real e escalável que armazena dados centrais de medição do negócio de publicidade na internet do Google
  • “Consistency Models” é composto por materiais para encontrar o ponto de equilíbrio entre consistência e disponibilidade de acordo com o ambiente do sistema

Teoria, linguagens, infraestrutura e armazenamento

Consenso, gossip e P2P

1 comentários

 
GN⁺ 2024-10-21
Opiniões no Hacker News
  • Esta lista parece um pouco antiga, e recomendo a lista de leitura sobre consenso distribuído da Heidi Howard
    https://github.com/heidihoward/distributed-consensus-reading...

  • Achei estranho ver o MapReduce do Google apresentado como a “ciência de foguetes” da área
    Fui conferir e esta lista é de 2014 [1], então é preciso ter cuidado, porque a situação mudou bastante desde então
    [1] https://news.ycombinator.com/from?site=dancres.github.io

    • Sabendo disso, o contexto fica bem mais claro. Já se passaram 10 anos desde que esta lista saiu e, mesmo naquela época, o artigo do MapReduce já tinha sido publicado havia 10 anos
  • Existe uma meta-lista de listas de leitura sobre sistemas distribuídos que criei cerca de 10 anos atrás
    Também acrescentei esta lista com uns 10 anos de atraso, e só Deus sabe quantos dos itens que reuni ainda estão no ar
    https://gist.github.com/macintux/6227368

  • Também vale ver https://ferd.ca/a-distributed-systems-reading-list.html, que menciona a lista original

    • É preciso deixar claro para quem, de fato, são listas como esta. Não acho que seja uma lista simplesmente para quem “quer aprender sistemas distribuídos
      Ela pode ajudar quem está tentando levar os limites adiante ou procurar novas abordagens, mas, para o restante, é como perguntar como resolver uma equação do segundo grau e receber 100 artigos sobre teoria das categorias
      A lista de Fred Herbert é mais recente que a original, mas, como ele mesmo diz, não é completa. Ele considera “Designing Data-Intensive Applications” essencial, mas ainda fala como se, para entendê-lo de verdade, fosse preciso ler muitos artigos primeiro
      Quando listas assim são apresentadas como pré-requisito para entender o assunto, podem soar como elevação da barreira de entrada
      Graças a décadas de trabalho acumulado de outras pessoas, não é preciso ler 100 artigos sobre nanokernels para se tornar um usuário eficaz de Linux. Criar um bom sistema operacional do zero continua sendo difícil, mas 99% das pessoas não precisam fazer isso; basta saber usar bem as ferramentas que já existem
      Com sistemas distribuídos é a mesma coisa: se você não está tentando avançar a fronteira da área, não precisa ser tão difícil assim
      Se você é um engenheiro de software que quer experiência prática em vez de mergulhar fundo em pesquisa, é melhor construir algo com NATS [1] ou YugaByte [2], ou fazer um tutorial prático como [3]
      “Designing Data-Intensive Applications” também vale a leitura. É um daqueles livros que ficam melhores a cada releitura, então dá para simplesmente ler, mesmo sem ter lido 100 artigos. Se aparecer uma parte que você não entende, pergunte e peça ajuda; não há problema em pular a enorme lista de leituras
      1: https://nats.io/
      2: https://www.yugabyte.com/
      3: https://pragprog.com/titles/tjgo/distributed-services-with-g...
  • E ainda assim não há menção à tecnologia CRDT?

    • É porque o material é de 10 anos atrás