BackendSystem DesignHigh Scale
EventHorizon
Système de billetterie capable de gérer des millions de requêtes simultanées. Architecture microservices robuste pour les événements à très forte demande.
Fonctionnalités Clés
- File d'attente virtuelle
- Protection anti-bot avancée
- Paiements haute concurence
- Plan de salle interactif
Problème
Lors de la mise en vente de billets très attendus (ex: concerts), la base de données s'effondre sous les verrous concurrents (Row Locking) quand 100k personnes essaient d'acheter 100 billets.
Solution
Architecture de 'Virtual Waiting Room' avec Redis pour le décompte atomique des places. Les achats sont mis en file d'attente Kafka et traités séquentiellement par des workers asynchrones.
services/booking/worker.go
1func ProcessBooking(msg *kafka.Message) {
2 // Atomic decrement in Redis (Lua script)
3 // Returns 1 if successful, 0 if sold out
4 success, err := redisClient.EvalSha(
5 ctx,
6 reserveScriptSHA,
7 []string{eventID},
8 qty
9 ).Result()
10
11 if success == 1 {
12 // Async DB write (eventual consistency)
13 db.CreateBooking(msg.Payload)
14 emailService.SendConfirmation(msg.User)
15 }
16}PROJECT PREVIEW
Stack Technique
MicroservicesKafkaRedisPostgreSQLKubernetes
RoleLead Developer
Timeline4 Weeks
Year2024