10.2. IDs, relógios lógicos, consenso e coordenação
Relógios lógicos ordenam por causalidade; consenso decide um valor entre nós mesmo com falhas.
Resumo
- IDs únicos: auto-incremento num nó, faixas por nó, UUID aleatório ou com tempo (Snowflake). Só os de um nó dão ordem exata.
- Relógio de Lamport: (contador, nó); ordem total compatível com causalidade. Hybrid logical clock mistura com tempo físico.
- Consenso: nós concordam com um valor; tolera falha de uma minoria. Equivale a lock, CAS e broadcast de ordem total.
- Algoritmos: Raft, Paxos, Zab. Usam épocas/termos e quórum; precisam de maioria viva e não resolvem tudo sozinhos.
- ZooKeeper/etcd: consenso pronto para eleição de líder, locks, metadados e detecção de membros. Não use para dados da aplicação.
Perguntas-chave
responda de cabeça, depois abraPor que relógios de Lamport não bastam para unicidade de nome?
A ordem só é conhecida depois de ver todas as operações; no momento do cadastro, um nó não sabe se outro pegou o nome com timestamp menor.
O que é broadcast de ordem total?
Entregar as mesmas mensagens a todos os nós na mesma ordem, de forma confiável; é equivalente a consenso repetido.
Por que não guardar dados de negócio no ZooKeeper?
Ele é projetado para poucos dados que mudam devagar; todo voto passa pela maioria, o que limita vazão e tamanho.
Exercícios de fixação
0/5 respondidas1.
Um serviço gera IDs de pedido em 20 nós, sem coordenação, e quer que IDs aproximem a ordem de criação. Qual esquema?
2.
Um relógio de Lamport garante que:
3.
Um cluster Raft de 5 nós continua decidindo enquanto quantos nós estiverem vivos e conectados?
4.
Qual uso do etcd ou ZooKeeper é adequado?
5.
Para que algoritmos de consenso usam números de época (termo)?