LSLínguas Sem BenaventeInglês para brasileiros

Aula

Sistemas distribuídos em inglês B2

Nível: B2

Objetivo

Explicar conceitos centrais de sistemas distribuídos (replication, consistency, partition, idempotency, retry, timeout, eventual consistency) em inglês técnico claro, articulando trade-offs sem recorrer a uma aula teórica longa.

Explicação

Em qualquer conversa sobre sistemas distribuídos, três ideias reaparecem em quase toda reunião: replication, consistency e partition. Em vez de decorar definições, é mais útil saber articulá-las em frases curtas e conectá-las ao problema concreto.

Replication é manter cópias dos mesmos dados em vários nodes. Ela aumenta a disponibilidade, mas cria imediatamente o problema de manter essas cópias coerentes entre si. Uma replica é cada cópia individual; um cluster é o conjunto de nodes que servem um mesmo sistema. Consistency é a garantia de que todas as réplicas enxergam o mesmo valor ao mesmo tempo.

Há dois polos úteis de saber contrastar:

  • Strong consistency: toda leitura retorna o valor da escrita mais recente. Simplifica o raciocínio, mas custa latência e disponibilidade.
  • Eventual consistency: réplicas podem divergir por um curto período, mas convergem depois. É o modelo padrão em feeds, contadores e caches distribuídos.

Uma partition é uma falha de rede que separa o cluster em grupos que não se enxergam. Durante uma partition, o sistema precisa escolher entre servir respostas (availability) e manter a coerência (consistency). Esse é o trade-off descrito informalmente pelo CAP theorem. Em sistemas com réplicas iguais, uma partition pode levar a um split brain, no qual dois lados decidem ser o líder e gravam dados conflitantes. A mitigação clássica é consensus (acordo entre a maioria) e leader election (apenas um líder grava em cada momento).

Três termos que sempre aparecem em código de produção:

  • Idempotency = uma operação que pode ser aplicada várias vezes com o mesmo efeito. Endpoints que recebem retries precisam ser idempotentes, caso contrário o segundo retry duplica o efeito (por exemplo, cobra duas vezes). Idempotent é a forma adjetiva.
  • Retry = tentar de novo após falha. Comum combinar com exponential backoff (esperar cada vez mais entre tentativas) e com circuit breaker (abrir o circuito após N falhas e parar de tentar por um tempo).
  • Timeout = tempo máximo de espera por uma resposta. Timeout curto demais dispara retries em cascata; timeout longo demais acumula requests pendentes. Em retries, uma leitura pode retornar um stale read se cair em uma réplica ainda não atualizada.

Frases-modelo para explicar sem dar aula:

  • `This endpoint should be idempotent because the client retries on timeout.`
  • `We accept eventual consistency for the activity feed, but the wallet requires strong consistency.`
  • `If the network partitions, the minority side stops accepting writes to avoid split brain.`
  • `We use exponential backoff and a circuit breaker to avoid hammering the downstream service.`

A estrutura recomendada em uma explicação curta é: (1) qual propriedade o sistema precisa; (2) o que acontece durante uma falha; (3) o trade-off assumido. Em B2, vale usar conectores como `because`, `so`, `otherwise`, `on the other hand` para articular causa e contraste, em vez de listar termos soltos.

Exemplos

InglêsTraduçãoObservação
This endpoint should be idempotent because the client retries on timeout.Este endpoint precisa ser idempotente porque o cliente tenta de novo em caso de timeout.Idempotente + motivo do retry na mesma frase.
We accept eventual consistency for the activity feed, but the wallet requires strong consistency.Aceitamos consistência eventual para o feed de atividades, mas a carteira exige consistência forte.Contraste explícito com 'but' entre dois componentes.
If the network partitions, the minority side stops accepting writes to avoid split brain.Se a rede particionar, o lado minoritário para de aceitar escritas para evitar split brain.If-clause + consequência + propósito ('to avoid').
We use exponential backoff and a circuit breaker to avoid hammering the downstream service.Usamos backoff exponencial e um circuit breaker para não sobrecarregar o serviço downstream.Solução composta; 'to avoid + gerúndio' para o propósito.
Reads from a follower may return stale data during a partition.Leituras feitas em uma follower podem retornar dados defasados durante uma partição.Modal 'may' para descrever comportamento possível, não certo.
The leader is elected by quorum, so there is never more than one writer per term.O líder é eleito por quorum, então nunca há mais de um escritor por termo.Causa e consequência com 'so'; 'per term' é vocabulário de consensus.

Erros comuns

  • Confundir replication com backup: replica serve leituras ativas; backup é uma cópia offline usada para recuperação.
  • Dizer `the system is consistent` sem qualificar — em B2, sempre explicite `strong` ou `eventual`.
  • Usar `retry` como substantivo em construções estranhas: o natural é `we added a retry` ou `the client performs a retry`.
  • Traduzir idempotency como `identidade` ou `idempotência` no sentido matemático abstrato. Em engenharia, significa literalmente 'aplicar duas vezes produz o mesmo efeito'.
  • Trocar `timeout` (configuração) com `timeout error` (o evento). É mais claro dizer `the request hit the timeout` ou `the call timed out` em vez de `the timeout was an error`.
  • Escrever `the network was partitioned by the firewall`. O padrão comum é `the network partitioned` (verbo intransitivo) ou `a network partition occurred`.

Prática guiada

Construa uma mini-explicação em três frases para cada cenário, usando o padrão: propriedade desejada → o que acontece na falha → trade-off assumido.

  • Cenário: feed de atividades.
  • Frases: `The activity feed accepts eventual consistency. During a partition, followers may serve slightly stale data. We chose availability over strong consistency, because the feed tolerates a few hundred milliseconds of lag.`

  • Cenário: carteira digital.
  • Frases: `The wallet requires strong consistency. If the network partitions, the minority side stops accepting writes. We chose consistency over availability, because showing an incorrect balance is worse than a brief write error.`

Repare no uso de `during a partition`, `may serve`, `because` para articular causa e no contraste `we chose X over Y` para explicitar o trade-off.

Resumo

Replication multiplica cópias; consistency descreve quão sincronizadas elas ficam (strong vs eventual); partition é a falha que força o trade-off entre availability e consistency. Idempotency, retry com exponential backoff, circuit breaker e timeout são os mecanismos do dia a dia. Em B2, explique articulando propriedade, falha e trade-off, e use contraste (but, on the other hand, we chose X over Y) para deixar claro o que foi sacrificado.

Vocabulário

Palavras principais

18 itens
distributed systemsistema distribuído

A distributed system has to handle partial failures.

Um sistema distribuído precisa lidar com falhas parciais.
nodenó (servidor dentro de um cluster)

Each node in the cluster stores a copy of the data.

Cada nó no cluster armazena uma cópia dos dados.
clustercluster (conjunto de nós)

The cluster spans three availability zones.

O cluster abrange três zonas de disponibilidade.
replicationreplicação (manter cópias em vários nós)

Replication improves availability but complicates consistency.

A replicação melhora a disponibilidade, mas complica a consistência.
replicaréplica (uma cópia individual)

Reads can be served from any replica.

Leituras podem ser servidas a partir de qualquer réplica.
consistencyconsistência (coerência entre réplicas)

Strong consistency is expensive under high write load.

Consistência forte é cara sob alta carga de escrita.
strong consistencyconsistência forte

The wallet relies on strong consistency.

A carteira depende de consistência forte.
eventual consistencyconsistência eventual

The activity feed uses eventual consistency.

O feed de atividades usa consistência eventual.
partitionpartição (falha de rede que separa o cluster)

A network partition split the cluster in two.

Uma partição de rede dividiu o cluster em dois.
split brainsplit brain (dois lados se comportando como líder)

Split brain can corrupt the data if the leaders write at the same time.

Split brain pode corromper os dados se os líderes escreverem ao mesmo tempo.
consensusconsenso (acordo entre a maioria dos nós)

Raft is a consensus algorithm for replicated logs.

Raft é um algoritmo de consenso para logs replicados.
leader electioneleição de líder

Leader election happens automatically when the current leader fails.

A eleição de líder acontece automaticamente quando o líder atual falha.
quorumquorum (maioria qualificada)

A write is acknowledged only after a quorum of replicas respond.

Uma escrita só é confirmada depois que um quorum de réplicas responde.
idempotencyidempotência (operação que pode ser repetida sem efeito extra)

Idempotency is required for any endpoint that accepts retries.

A idempotência é exigida em qualquer endpoint que aceite retries.
idempotentidempotente

The charge endpoint is idempotent thanks to a unique request id.

O endpoint de cobrança é idempotente graças a um id único de requisição.
retrynova tentativa; tentar de novo

The client performs a retry with exponential backoff.

O cliente faz um retry com backoff exponencial.
timeouttimeout (tempo máximo de espera)

The call hit the 500ms timeout.

A chamada estourou o timeout de 500ms.
exponential backoffbackoff exponencial (espera crescente entre tentativas)

Exponential backoff prevents a thundering herd after an outage.

O backoff exponencial evita uma avalanche de retries depois de uma queda.

História

História: Sistemas distribuídos em inglês B2

Nível: B2

História em inglês

The double charge

On Friday afternoon, the payments team noticed that two customers had been charged twice for the same order. The first engineer, Priya, asked whether the charge endpoint was supposed to be idempotent. Her colleague replied that the client was configured to retry on timeout, but the server did not check the request id. Priya explained that any endpoint that accepts retries must be idempotent, otherwise the second call creates a duplicate effect. They added a unique request id to every retry, and the server started returning the cached response for repeated requests. After the fix, the same timeout no longer produced a double charge.

Eventual consistency in the feed

The same week, another team was building an activity feed for the social app. The lead engineer, Marcus, told the new joiner that the feed accepted eventual consistency. He explained that when a user posts something, the followers may not see it for a few hundred milliseconds. That lag was acceptable because the feed was read-heavy and did not require strong consistency. The wallet, on the other hand, used strong consistency to avoid showing a balance that did not match the ledger. The new joiner asked what would happen if the network partitioned between data centers. Marcus answered that the wallet would stop accepting writes on the minority side, while the feed would keep serving from the local replica. He added that a read from a follower during the partition could return a stale read, but the divergence would resolve once the partition healed.

Tradução linha por linha

InglêsTradução
On Friday afternoon, the payments team noticed that two customers had been charged twice for the same order.Na sexta à tarde, a equipe de pagamentos percebeu que dois clientes tinham sido cobrados duas vezes pelo mesmo pedido.
The first engineer, Priya, asked whether the charge endpoint was supposed to be idempotent.A engenheira Priya perguntou se o endpoint de cobrança era para ser idempotente.
Her colleague replied that the client was configured to retry on timeout, but the server did not check the request id.O colega respondeu que o cliente estava configurado para tentar de novo em caso de timeout, mas o servidor não verificava o id da requisição.
Priya explained that any endpoint that accepts retries must be idempotent, otherwise the second call creates a duplicate effect.Priya explicou que qualquer endpoint que aceite retries precisa ser idempotente, caso contrário a segunda chamada cria um efeito duplicado.
They added a unique request id to every retry, and the server started returning the cached response for repeated requests.Eles adicionaram um id único a cada retry, e o servidor passou a devolver a resposta em cache para requisições repetidas.
After the fix, the same timeout no longer produced a double charge.Depois do fix, o mesmo timeout não produzia mais uma cobrança duplicada.
The same week, another team was building an activity feed for the social app.Na mesma semana, outra equipe estava construindo um feed de atividades para o app social.
The lead engineer, Marcus, told the new joiner that the feed accepted eventual consistency.O engenheiro líder, Marcus, disse ao novo colega que o feed aceitava consistência eventual.
He explained that when a user posts something, the followers may not see it for a few hundred milliseconds.Ele explicou que, quando um usuário publica algo, os seguidores podem não ver por alguns milissegundos.
That lag was acceptable because the feed was read-heavy and did not require strong consistency.Esse atraso era aceitável porque o feed era de leitura intensa e não exigia consistência forte.
The wallet, on the other hand, used strong consistency to avoid showing a balance that did not match the ledger.A carteira, por outro lado, usava consistência forte para evitar mostrar um saldo que não batia com o livro-razão.
The new joiner asked what would happen if the network partitioned between data centers.O novo colega perguntou o que aconteceria se a rede particionasse entre os data centers.
Marcus answered that the wallet would stop accepting writes on the minority side, while the feed would keep serving from the local replica.Marcus respondeu que a carteira pararia de aceitar escritas no lado minoritário, enquanto o feed continuaria servindo a partir da réplica local.
He added that a read from a follower during the partition could return a stale read, but the divergence would resolve once the partition healed.Ele acrescentou que uma leitura em uma follower durante a partição poderia devolver uma leitura defasada, mas a divergência se resolveria quando a partição terminasse.

Notas de vocabulário

  • idempotent = qualidade de uma operação que pode ser repetida sem efeito extra; essencial para qualquer endpoint que aceite retries.
  • retry on timeout = tentar de novo quando o tempo de espera é excedido; padrão em clientes resilientes.
  • request id = identificador único enviado pelo cliente para o servidor deduplicar retries.
  • duplicate effect = efeito duplicado, como cobrar duas vezes; consequência típica de retries sem idempotency.
  • eventual consistency = modelo em que réplicas convergem depois de uma janela de divergência.
  • read-heavy = workload com muito mais leituras do que escritas; bom candidato a consistência eventual.
  • strong consistency = garantia de que toda leitura vê a escrita mais recente; cara em latência, mas evita confusão no usuário.
  • on the other hand = conector de contraste usado para comparar dois componentes do mesmo sistema.
  • the network partitioned = verbo intransitivo; descreve a falha que separa o cluster em grupos isolados.
  • stale read = leitura que devolve um valor defasado por vir de uma réplica ainda não sincronizada.
  • once the partition healed = cláusula temporal com 'once' para descrever a recuperação após a falha de rede.

Perguntas de compreensão

  1. What problem did the payments team notice on Friday afternoon?
  2. Why was the charge endpoint producing double charges?
  3. What did Priya and her colleague change to fix the issue?
  4. Why does the activity feed accept eventual consistency?
  5. Why does the wallet require strong consistency, unlike the feed?
  6. What happens to the wallet if the network partitions between data centers?
  7. What is a stale read, and when can it happen in this story?
  8. How does the system recover after a partition?

Prática com a história

  1. Transforme em pergunta técnica: The client retries on timeout.
  2. Complete: A write is acknowledged only after a ___ of replicas confirm it.
  3. Reescreva em tom técnico: We try again a few times when the call fails.
  4. Traduza: A carteira exige consistência forte para evitar mostrar um saldo incorreto.
  5. Faça uma pergunta com 'what if' sobre uma partition no feed.

Prática

Exercícios e teste

Próxima etapa
8blocos de exercícios disponíveis neste tema
11questões de teste para revisar depois da aula

A próxima melhoria é transformar esses arquivos em perguntas com resposta no navegador. Por enquanto, esta página já organiza o estudo e permite seguir a aula inteira sem abrir os arquivos manualmente.