Tüm projeler
e commerce

Kroger — Binlerce Mağazada Gerçek Zamanlı Yerel Envanteri Hızlandırmak

Kurumsal Market · Redis · SQL İndeksleme · Yüksek Eş Zamanlılık

Müşteri
Kroger
Endüstri endüstrisi
Grocery Retail
Konum Location
United States
Yıl Yılı Yıl Yılı Yıl Yılı
2023
Öpücük siteyi

fast

Catalog page load (peak)

vs unacceptable before

eliminated

Inventory sync latency impact

row-level locking

high

Cache hit rate (catalog browse)

Redis layer

2,700+

Stores supported

real-time inventory each

Proje kısa
Müşteri
Kroger
Endüstri endüstrisi
Grocery Retail
Konum Location
United States
İş dahil
Web Development

Kroger'ın market teslimat platformu size yerel mağazanızdaki stoku gösterir — şu an, dün değil. Bunu büyük ölçekte hızlı ve doğru yapmak göründüğünden zordur. Yavaşlatan veritabanı darboğazlarını düzelttik.

01 / Project Overview

Durum durumu

Kroger, Amerika Birleşik Devletleri genelinde binlerce market işletiyor. Teslimat platformları gerçekten zor bir şey yapıyor: her müşteriye kendi yerel mağazasındaki stoku, raf envanteri değiştikçe neredeyse gerçek zamanlı olarak güncellenerek gösteriyor. Projeye katıldığımızda, sürekli eş zamanlı yük altında katalog sayfası gecikmesi kabul edilemez düzeydeydi. Temel neden bir faktörler kombinasyonuydu: ürün, mağaza ve envanter tabloları arasında indekslenmemiş birleşimler; envanter güncelleme yazmaları satır düzeyinde kilit yerine geniş tablo kilitleri alıyordu. Üçünü de ele aldık. En yaygın sorgu kalıplarında bileşik indeks stratejisi sorgu yürütme süresini önemli ölçüde azalttı. Envanter yazma hattı satır düzeyinde kilitleme kullanacak şekilde yeniden yazıldı. Tüm katalog göz atma sayfalarının önüne Redis önbellekleme konuldu.

02 / The Challenge

Ne değiştirmeliydi

Katalog sayfaları sürekli eş zamanlı yük altında yavaştı — veriler, yük altında tam taramaya ulaşan üç büyük tablo arasında indekslenmemiş birleşimler gösterdi. Mağazalardan gelen toplu envanter senkronizasyon işlemleri tablo düzeyinde kilitler alıyor, senkronizasyon pencereleri sırasında tüm kullanıcılar için okuma gecikmesi artışlarına neden oluyordu.

03 / Çözümümüz

Ne değiştik

Üç parçalı düzeltme: tüm ürün×mağaza×kategori sorgu kalıplarında bileşik indeksler; senkronizasyon penceresi gecikme artışlarını ortadan kaldırmak için satır düzeyinde kilitlemeyle yeniden yazılmış envanter hattı; envanter senkronizasyon döngüsüyle eşleşen TTL ile tüm katalog göz atma yollarında Redis önbellekleme.

04 / Teslimatlar ve sonuçlar

Müşteri ne kazandı

  • 01 Tüm katalog sorgu sıcak yollarında bileşik indeksleme
  • 02 Satır düzeyinde kilitleme — senkronizasyon yazmaları okumaları engellemiyor
  • 03 Envanter senkronizasyon döngüsüyle eşleşen Redis önbellek TTL
  • 04 2.700+ mağazaya bireysel gerçek zamanlı stokla ölçekleniyor
Bir sonraki kısıtlamayı getirin

Daha net bir şekilde ileriye ihtiyacı olan bir proje var mı?

Projeyi tartışmak