Design a hotel-booking platform that lets travelers search for available rooms and complete reservations in real time. The system must support millions of daily searches, tens of thousands of concurrent bookings, and guarantee that no two guests can reserve the same room for overlapping dates. Start by outlining the high-level architecture: search, availability, booking, payment, and inventory management. Detail how a user searches by city, check-in/check-out dates, and number of guests; how the system returns a ranked list of available hotels and rooms; how it prevents double-booking when multiple users attempt to reserve the same room; and how it handles cancellations, modifications, and overbooking policies that hotels may enforce. Address data models, API design, consistency guarantees, caching, and geographic distribution. Assume 100 M daily searches, 1 M bookings/day, 50 K concurrent users at peak, 99.9 % availability, and <200 ms p99 search latency.