Practice
Solution
Step 1: Identify the role of Dead Letter Queues
DLQs isolate failed messages from the main queue, enabling retries without blocking normal processing.Step 2: Evaluate alternatives
Relational DBs (A) add latency and complexity; Redis (C) lacks durability guarantees; load balancers (D) do not handle message state or retries.Final Answer:
Option A -> Option AQuick Check:
DLQ isolates failures for retry without blocking main queue [check]
Solution
Step 1: Trace failure impact of partial warming crash
Without completion mark, warming restarts causing duplicate warming and resource waste.Step 2: Eliminate other options
Stale data unlikely if warming overwrites; cache misses occur but duplicate warming is immediate failure; fallback read-through causes latency, not immediate failure.Final Answer:
Option B -> Option BQuick Check:
Crash without completion causes duplicate warming retries [check]
Solution
Step 1: Analyze latency and partition tolerance needs
Low latency during partitions requires availability and partition tolerance, sacrificing immediate consistency.Step 2: Match architecture to constraints
AP systems with asynchronous replication provide availability and eventual consistency during partitions.Final Answer:
Option B -> Option BQuick Check:
AP architecture fits low latency and partition tolerance with eventual consistency [check]
Solution
Step 1: Identify components stressed by 10x scale
Database scaling is often handled by sharding or replicas; load balancers scale horizontally; client SDKs are local.Step 2: Recognize GraphQL parsing and validation cost
Parsing and complexity validation are CPU-bound and happen per request, becoming CPU bottlenecks at high request rates.Final Answer:
Option B -> Option BQuick Check:
GraphQL validation CPU cost scales linearly with requests [check]
Solution
Step 1: Identify stateful bottleneck at scale
Chat servers maintain stateful WebSocket connections bound to server memory, making resharding difficult at 10x scale.Step 2: Compare other components
Databases (A) can be scaled with sharding and caching; message queues (C) can add partitions; load balancers (D) scale horizontally more easily.Final Answer:
Option D -> Option DQuick Check:
Stateful WebSocket servers -> first bottleneck at 10x scale [check]
