Eventual consistency на собеседовании системного аналитика

Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

Карьерник — Duolingo для аналитиков: 10 минут в день тренируй SQL, Python, A/B, статистику, метрики и ещё 3 темы собеса. 1500+ вопросов в Telegram-боте. Бесплатно.

Что такое eventual consistency

После updates — system eventually становится consistent (in absence новых updates).

В meantime — different nodes могут видеть different values.

Time 0: A writes "X=5" to node 1.
Time 1: Node 2 reads X → may return old value or "5" (depends on replication).
Time 5: Replication propagates → all nodes return "5".

Trade-off vs strong consistency: lower latency, higher availability.

BASE

Alternative to ACID для distributed systems.

  • Basically Available. Always responds.
  • Soft state. State может change даже без input.
  • Eventually consistent. Consistency achieved over time.

Cassandra, DynamoDB — BASE systems.

Conflict resolution

Two writes к same key из different nodes.

Last-Write-Wins (LWW). Compare timestamps. Newer wins.

Pros: simple. Cons: clock skew issues, data loss.

Application-level merge. Domain-specific (например, shopping cart — merge sets).

CRDT-based. Mathematical resolve.

Manual conflict resolution. Detect, ask user.

Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

Vector clocks

Logical timestamps. Each node имеет counter, incremented on writes.

Node A: {A: 1, B: 0}
Node A writes → {A: 2, B: 0}
Node B writes (без seeing A's) → {A: 0, B: 1}

Two writes — concurrent (neither dominates other).

Vector clocks detect causality / concurrency.

CRDTs

Conflict-free Replicated Data Types. Math construct guaranteeing eventual consistency без coordination.

Examples:

  • G-Counter. Grow-only counter.
  • PN-Counter. Increment / decrement.
  • OR-Set. Observed-Remove Set.
  • LWW-Register. Last-write-wins.

Operations commutative, associative — order не matters. Final state = same regardless порядка.

Used в Riak, Redis (CRDB), collaborative editing (Y.js, Automerge).

Связанные темы

FAQ

Это официальная информация?

Нет. Статья основана на distributed systems literature (Lamport, Vogels, Shapiro CRDT).


Тренируйте системный анализ — откройте тренажёр с 1500+ вопросами для собесов.