
Backend
TicketRush
Konser/etkinlik bileti satışlarında oluşan race condition ve over-selling sorunlarını Redis tabanlı atomik kilitleme (Lua Script) ve RabbitMQ ile çözen, yüksek eşzamanlılığa dayanıklı bir event-driven bilet rezervasyon sistemi. Stok kontrolü bellek üzerinde yapılarak veritabanı darboğazı önlenir; Docker ile ölçeklenebilirlik ve veri tutarlılığı yük testleriyle kanıtlanmıştır.
Demo
Problem
Popüler etkinliklerde binlerce kullanıcı aynı anda aynı koltuğu almaya çalıştığında çifte satış ve veri tutarsızlığı oluşur.
Öne çıkanlar
- Atomik koltuk rezervasyonu için Redis ile dağıtık kilitleme
- RabbitMQ ile olay tabanlı sipariş işleme
- Docker ile paketlenmiş çok servisli yapı
- Stok için ilişkisel PostgreSQL şeması
Mimari ve notlar
Stok kontrolü ve düşümü bellekte, tek bir atomik Redis Lua betiğiyle yapılır; böylece iki alıcı aynı koltuk için kontrolü birlikte geçemez ve veritabanı kritik yoldan çıkar. Kabul edilen rezervasyonlar RabbitMQ'ya devredilip olay olarak işlenir, ilişkisel stok şeması PostgreSQL'de durur ve tüm yapı Docker'da çalışır. Yük altındaki veri tutarlılığı Docker tabanlı yük testleriyle doğrulanmıştır.
GitHub'dan canlı
- Yıldız
- 1
- Fork
- 0
- Son güncelleme
Diller
- Java57,8%
- TypeScript21,8%
- JavaScript15,6%
- CSS2,3%
- Dockerfile1,4%
- Other1,2%
Herkese açık GitHub API'sinden alınır, saatte bir yenilenir.
README'den
TicketRush, popüler konserler ve etkinlikler gibi yüksek talep gören senaryolarda race condition sorunlarını çözen, event-driven ve tam dağıtık bir bilet satış sistemidir.
Amaç, binlerce kullanıcının aynı anda “Satın Al” butonuna bastığı durumda bile:
- Veri tutarlılığını sağlamak
- Overselling riskini ortadan kaldırmak
- Sistemi kilitlemeden, ölçeklenebilir bir mimari ile süreci yönetmektir.
Teknoloji Yığını
Aşağıdaki teknoloji yığını, yüksek trafikli sistemlerin ihtiyaçları olan ölçeklenebilirlik, tutarlılık ve performans kriterlerine göre seçildi.
…