Arpit's Newsletter read by 38000+ engineers
Weekly essays on real-world system design, distributed systems, or a deep dive into some super-clever algorithm.
The review system for Booking is one critical service as it drives business and hence making it highly available becomes extremely crucial.
Here’s a thread about building a highly available system and the architecture of Booking’s Review Service 👇
Review shown on Booking.com are authentic and it helps people make a decision and thus bring in revenue.
The review system is also a high-throughput system as people can land on it from Search Engines or internal navigation.
The core Review Service will be a simple REST-based API that exposes endpoints to create, read, update, and delete reviews.
Review Service of Booking handles 10,000 requests per second at peak with p99 of 50ms.
Given that the latncy requirement is too stringent, Booking serves most of the review from a centralized remote Cache and has done a bunch of optimizations on the Database through materialized views.
Booking.com has 250 million reviews and given the amount of info a review holds, they store these reviews in a shared datastore.
Given Booking needs storage to be highly available, they configured each database to have multiple replicas and that too across regions to tolerate regional outages.
Given that the traffic for a travel business surges during the holiday season, the database needs to be scaled up to handle the load.
But keeping the database scaled up throughout the year without much load is very inefficient and hence Booking.com required some so of storage autoscaling.
Scaling up and down a sharded database requires us to add and remove nodes; but doing this naively requires the data to be re-partitioned.
To keep the movement to a bare minimum during scaling, Booking.com chose Consistent Hashing for determining data ownership.
Here's the video ⤵
Super practical courses, with a no-nonsense approach, are designed to spark engineering curiosity and help you ace your career.
An in-depth, self-paced, and on-demand course that for early engineers to become great at designing scalable, available, and extensible systems at scale.
A masterclass that helps experienced engineers become great at designing scalable, fault-tolerant, and highly available systems.
A course that helps covers Redis internals by reimplementing its core features like - event loop, serialization protocol, pipelining, eviction, and transactions.
Arpit's Newsletter read by 38000+ engineers
Weekly essays on real-world system design, distributed systems, or a deep dive into some super-clever algorithm.