CAP Theorem, real examples rap
distributed database vendor Hoch fast, consistent, always available claim. CAP theorem suspicious pitch vaD qatlh: network partition Daq Consistency, Availability, Partition tolerance Dung cha' neH keep laH, 'ej partition tolerance optional pagh - real choice consistency 'ej availability Dung.
wej letters nuq
- Consistency (C): read Hoch most recent write nob, error pagh. nodes Hoch same data same time legh.
- Availability (A): request Hoch (non-error) response tlhap (most recent write ghaj guarantee pagh).
- Partition tolerance (P): nodes Dung messages arbitrary number dropped delayed 'ach system Qu'.
Network partitions qaS: switch fail, data-center link saturate, node NIC flake. network unreliable opt out laHbe' - P real design choice pagh; distributed systems fact. C 'ej A Dung choose partition Dung. partition pagh vaj well-built system both nob laH.
"pick two" misleading
classic "pick two of three" CA valid option suggest (partition tolerance turn off laH). laHbe' - system wa' machine Daq network calls pagh vaj. practice Daq theorem wa' question: partition qaSDI' system available (consistency sacrifice) pagh consistent (availability sacrifice)?
CP practice: leader-based configuration store
configuration service Raft-based store (etcd, Consul, ZooKeeper). writes leader Daq jaH, majority nodes replicate acknowledge qaSpa'.
Client -> Leader -> [replicate to majority] -> ack -> Client
network partition cluster cha' groups split vaj majority nodes ghaj group neH leader elect 'ej writes accept. minority side writes accept Qo' - errors return (stale conflicting data serve risk pagh).
# Simplified: a node in the minority partition rejects writes
def handle_write(request):
if not self.has_quorum():
raise Unavailable("no quorum: refusing to risk inconsistent write")
return self.replicate_and_commit(request)
CP: consistency preserved (minority side availability sacrifice). configuration data, leader election, distributed locks vaD Dun - stale lock owner serve temporary outage law' Qab.
AP practice: shopping cart service
shopping cart Dynamo-style database (Cassandra, DynamoDB) multiple replicas regions Daq. partition Dung replica Hoch independently writes accept.
# Simplified: every reachable replica accepts writes during a partition
def handle_write(request):
self.local_store.put(request.key, request.value, timestamp=now())
return Ack() # never blocks on other replicas
cha' regions same cart diverging versions ghaj. partition heal vaj reconciliation strategy poQ: last-write-wins timestamp, vector clocks, application-level merge (items union - side wa' choose pagh).
# A simple merge strategy: union cart items instead of picking a winner
def merge_carts(cart_a, cart_b):
return {**cart_a, **cart_b} # naive union; real systems need care around removals
AP: cart service partition both sides Daq available, correctness after fact repair (write Daq enforce pagh). shopping cart vaD available-but-eventually-consistent consistent-but-down law' Dun - browsing checkout Dung "service unavailable" vay' neH pagh.
single system-wide choice pagh
useful realization: CAP per operation (database product whole pagh). real systems law' both mix: DynamoDB table same Daq eventually-consistent 'ej strongly-consistent reads offer. PostgreSQL synchronous replication CP (primary writes) 'ach asynchronous standbys stale (AP-leaning) reads serve configure laH.
-- PostgreSQL: synchronous_commit controls where you sit between C and A
SET synchronous_commit = 'on'; -- wait for replica ack: favors consistency
SET synchronous_commit = 'off'; -- don't wait: favors availability/latency
individual operations level Daq design: vam write linearizable consistency poQ'a'? vam read seconds stale tolerate'a'? per-operation answer (per-database pagh) CAP design tool earn.
PACELC: theorem underrated sequel
CAP partition Dung behavior neH describe. Daniel Abadi PACELC extension common case chel: partition pagh 'ach latency consistency trade. If Partitioned, Availability pagh Consistency; Else (normal), Latency pagh Consistency.
remote region synchronously replicate system strong consistency tlhap, write Hoch cross-region round-trip pay. asynchronously replicate system low latency tlhap 'ach readers stale data legh (network healthy 'ach). trade-off request Hoch Daq (rare partition events neH pagh) - day-to-day system design Daq partition case law' qatlh.
design vaj apply
- operations locks/leader-election/inventory-decrement style (CP poQ) vs cart/profile/analytics style (AP tolerate) identify.
- marketing claim "always consistent always available" database choose Qo' - combination real partition survive pagh. nodes reach laHbe'DI' nuq Qu' specifically jey.
- consistency knob per-cluster pagh per-request check. DynamoDB 'ej Cassandra per read choose - usually right granularity.
- PACELC qaw: consistency choice latency cost happy path Daq (outage risk cost neH pagh).
CAP theorem distributed systems anxious qatlh pagh - database Hoch build qaSpa' checklist question: partition hit vaj requests nuq qaS exactly, 'ej trade-off nuq side data actually poQ?