Evaluation of Quora’s Design

Lesson 120 of 25610 min readPremium lesson preview
In this lesson1 sections

Evaluation of Quora’s Design

Evaluate the proposed Q&A service against its requirements, then define a recovery plan that can restore a mutually valid set of content, media, and configuration.

Requirements compliance

The architecture suggests ways to meet the requirements. We still need load tests, failure tests, and measurable targets to demonstrate that it does:

  • Scalability: The system scales effectively using powerful and homogeneous service hosts. These powerful machines handle in-memory caching, queueing, and routing. Their uniformity simplifies horizontal scaling. For the database, we use vertical sharding to distribute load across MySQL servers. To minimize complex join queries, related tables are placed in the same shard.

Note: Vertical sharding has limits. Large tables may eventually cause write bottlenecks, requiring horizontal sharding.

  • Consistency: Questions, answers, and individual votes need explicit write and read guarantees. Synchronous replication can protect acknowledged writes, but strong consistency also depends on replica selection, leadership, and failover rules. Feed indexes and view counts may be eventually consistent. A question may wait a long time for a human answer, but that does not justify a slow or ambiguous post acknowledgment.

Note: Overall, the design prioritizes techniques that reduce user-perceived latency.

The rest of this lesson is for Premium members

Premium opens every lesson in this course, along with all questions and solutions on PracHub.