Initial Design of Quora
We'll cover the following...
Initial design
The initial design of Quora consists of the following components:
Web and application servers: Web servers accept incoming HTTP requests and forward them to application servers for processing. They run manager processes that delegate work to worker processes on application servers through a routing layer. This routing layer manages task queues, where managers enqueue tasks and workers dequeue them for execution. Application servers may also maintain in-memory priority queues to differentiate request classes. The following diagram shows an abstract view of this architecture:
Data stores: Quora uses specific storage solutions based on data requirements:
Relational database (MySQL): Stores critical data requiring high consistency, such as questions, answers, comments, and votes.
NoSQL (HBase): Stores high-throughput data like view counts, ranking scores, and extracted features for recommendations. HBase supports the high-bandwidth requirements of big data processing and avoids the expensive recomputation of features. ...