Conexão · Interrompida

Algo não carregou

Parte desta página não chegou até você. Recarregue para tentar novamente — se persistir, verifique sua conexão.

Pular para o conteúdo principal
Escritos · № 03

Todos posts

Notas longas sobre software, sistemas distribuídos e a arte de construir. Publicando uma por semana.

Todos os Posts
8 posts · Distributed Systems
Distributed Systems01

Relógios Lógicos Híbridos: Fazendo o Last-Write-Wins Significar a Escrita Mais Recente

O last-write-wins baseado em relógio de parede mantém a escrita do relógio mais rápido, e não a do evento mais recente — e descarta silenciosamente dados causalmente mais novos sob desvio (skew). Estas são minhas notas reconstruindo um Relógio Lógico Híbrido em Go: um timestamp de 64 bits, monotônico e causal, por que seu contador permanece limitado, e quanto isso custa em reinícios por incerteza no estilo do CockroachDB.

8 de jul.
Distributed Systems02

Convergência É uma Propriedade da Sua Função de Merge, Não da Rede

Uma vez vi uma tarde inteira de edições offline desaparecer sob um sync last-writer-wins, e a correção não foi uma rede melhor — foi uma função de merge melhor. Estas são minhas notas sobre por que réplicas CRDT convergem: um merge que é comutativo, associativo e idempotente. Reconstruo um OR-Set add-wins mínimo em TypeScript, executo o código e avalio o que a garantia custa em tombstones e memória.

14 de jun.
Distributed Systems03

Two-Phase Commit na JVM: O Problema de Bloqueio Que Ninguém Coloca no Diagrama

Eu derrubei de propósito um coordenador de Two-Phase Commit em uma pequena simulação Kotlin para medir por quanto tempo os participantes ficam travados quando o coordenador desaparece entre as fases. O resultado é a parte do 2PC que os diagramas nunca mostram — e a razão pela qual eu modelaria a maior parte das escritas cross-service como uma saga em vez disso.

30 de mai.
Distributed Systems04

Descarte Primeiro as Requisições Certas: Load Shedding Baseado em Prioridade sob Sobrecarga

Limites estáticos de RPS descartam o tráfego errado. Concorrência é o que satura um serviço, não a taxa de requisições. A partir das minhas anotações após ler o artigo do InfoQ sobre proteção contra sobrecarga, o post de janeiro da Uber sobre o Cinnamon e a palestra da Netflix no QCon SF sobre load shedding priorizado em nível de serviço, eis por que latência é o sinal de controle correto — e como uma pequena taxonomia de prioridades aliada a um limite adaptativo de concorrência mantém o tráfego mais barato sendo descartado primeiro.

28 de mai.
Distributed Systems05

Actor-per-Entity vs Bloqueio Otimista no Postgres: Um Comparativo em Reserva de Assentos

Executei a mesma carga de trabalho de reserva de assentos com hot key de duas formas: Postgres com coluna de versão e retries, e um único actor por assento. O design com actor não escalou melhor — ele moveu o problema difícil do controle de concorrência para a corretude de roteamento e rebalanceamento, e essa troca foi a mais fácil de raciocinar sob hot keys.

26 de mai.
Distributed Systems06

Auditando um serviço Scala contra as quatro restrições regenerativas de Chad Fowler

Levei um serviço Scala de processamento de pedidos das minhas anotações pelas quatro restrições regenerativas de Chad Fowler. Duas passaram de graça, duas forçariam um redesign de verdade. Aqui está o que aprendi sobre onde "módulo fracamente acoplado" termina e "componente regenerativo" começa, e quais partes do redesign eu de fato pagaria.

23 de mai.
Distributed Systems07

AckWait É um Contrato: Como um Default de 30 Segundos Derrubou Meu Consumer JetStream

Perdi uma noite com um pull consumer NATS JetStream que dobrou seu trabalho em produção. A causa foram três linhas de ConsumerConfig que eu nunca escrevi. Estas são minhas anotações sobre o que o AckWait realmente conta, por que MaxDeliver = -1 é a armadilha silenciosa e o contrato Go de 70 linhas que agora envio em todo consumer JetStream.

12 de mai.
Distributed Systems08

Arquitetura Baseada em Células Não É de Graça: O Que Slack, DoorDash e Roblox Realmente Pagaram Por Ela

Arquitetura baseada em células contém o raio de impacto, mas não é gratuita. Um olhar sobre o que Slack, DoorDash e Roblox realmente pagaram por células em produção — e um checklist para os padrões mais baratos de isolamento de falhas que a maioria dos times deveria considerar primeiro.

23 de abr.