HackerTrans
TopNewTrendsCommentsPastAskShowJobs

alebairos

no profile record

comments

alebairos
·3 yıl önce·discuss
My safety (of my group) is what really matters.
alebairos
·3 yıl önce·discuss
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).

Recommendations: - 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.

Scaling: - 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.

Tip: - Use the same service to manage reservations and the inventory to avoid data consistency issues that require 2PC or Saga.