Practice
Solution
Step 1: Understand Ledger Service's double-entry validation
The Ledger Service enforces double-entry consistency; mismatches indicate data corruption or bugs.Step 2: Evaluate failure handling
Retrying indefinitely (A) risks blocking; ignoring mismatch (C) breaks accounting; deleting entries (D) risks data loss. Marking failed and alerting (B) enables safe manual reconciliation.Final Answer:
Option B -> Option BQuick Check:
Mismatch triggers failure mark and alert -> safe reconciliation [check]
Solution
Step 1: Identify prefix lookup requirements
Prefix queries require fast, low-latency lookups optimized for string prefixes, which relational DB LIKE queries are inefficient at scale.Step 2: Evaluate component suitability
A distributed in-memory Trie cache supports efficient prefix matching and can be sharded by prefix hash for scalability, unlike message queues or full-text search without caching.Final Answer:
Option A -> Option AQuick Check:
Distributed Trie cache -> efficient prefix lookups at scale [check]
Solution
Step 1: Analyze consistency and durability trade-offs
Strong consistency requires strict serializable isolation; durability can be delayed to improve throughput.Step 2: Evaluate replication and isolation options
Asynchronous replication with strict serializable isolation fits the requirement, allowing durability delay without sacrificing consistency.Final Answer:
Option A -> Option AQuick Check:
Async replication + strict serializable -> strong consistency, delayed durability [check]
Solution
Step 1: Understand failure impact on Layer 7 inspection
If HTTP header inspection fails, the load balancer may fallback to Layer 4 forwarding to maintain availability.Step 2: Eliminate options inconsistent with graceful degradation
Dropping all connections (B) is unlikely; forwarding blindly to default backend (A) loses load distribution; encryption errors (D) unrelated.Final Answer:
Option C -> Option CQuick Check:
Layer 7 failure -> fallback to Layer 4 forwarding without HTTP routing [check]
Solution
Step 1: Analyze ordering and availability needs
Single global partition (A) preserves total order but limits throughput and availability; random keys (C) break ordering; relational DB with locking (D) is a bottleneck at scale.Step 2: Partition by conversation ID
Partitioning by conversation ID (B) ensures ordering within conversations and allows replication for availability and scaling.Final Answer:
Option A -> Option AQuick Check:
Partition by conversation ID preserves order and supports availability [check]
