News for hackers. Stuff that matters.
Re:Ask HN: How does Booking.com guarantee consistency of res... by alebairos on Sunday September 10, 2023 @06:39AM (#37454595)
Chapter 7 of Alex Xu’s Volume 2 has a nice description of most of the problems. Below, a post that has a good level of details.

https://devinz1993.medium.com/book-notes-system-design-inter...

Extracted from the post:

Chapter 7. Hotel Reservation System Functional requirements: - View hotels and rooms. - Reserve a hotel room. - Add/delete/update a hotel room. - Support overbooking. Non-functional requirements: - Support high concurrency. - Moderate latency (a few seconds for reservation). Choose a relational database for the read-heavy workload and ACID properties. Include an idempotency key in the API for making reservations to avoid double booking. Use the microservice architecture and use remote procedure calls for inter-service communication. Keep a pre-populated room type inventory (for 2 years ahead) to support reservations by room type (instead of by room id). Concurrency control: - Pessimistic locking is prone to deadlocks and tends to have bad performance. - Optimistic locking is usually faster but performance dramatically drops when contention is heavy. How to scale up? - Shard the database by hotel since most queries need to filter by it. - Cache inventory information (aggregates) in Redis to reduce database load and improve read performance. Use the same service to manage reservations and the inventory to avoid data consistency issues that require 2PC or Saga.

There are no comments on this comment yet.