En döner-kjede med 4 filialer i Izmir Alsancak er tilkoblet Getir Yemek, Trendyol GO og Yemeksepeti samtidig. I stedet for å vedlikeholde tre separate menyer bruker de thMenu som master record; lagerfradrag skjer på ett sted, og en webhook fan-out oppdaterer de tre plattformene.
Master record-arkitektur
Kolonnen products.stock_quantity i D1_MENU er den eneste kanoniske kilden. Ved ordrebekreftelse: UPDATE products SET stock_quantity = stock_quantity - 1 WHERE id = ? AND stock_quantity > 0. 0 rader = utsolgt.
Ved suksess går en hendelse til Cloudflare Queue. Tre workers patcher API-ene parallelt. Gjennomsnittlig fan-out-latens 340 ms.
Konfliktløsning
Scenario: 5 lahmacun på lager. I løpet av samme sekund kommer 5 ordrer fra tre plattformer. Atomisk UPDATE serialiserer — den siste finner 0 og avvises. Slutttilstand 0, tre "utsolgt"-signaler.
D1 har ikke eksplisitte row locks, men WHERE stock > 0 spiller samme rolle. Null over-sell på 6 måneder.
Drift-avstemming
Yemeksepeti-webhook har 30 s forsinkelse, Trendyol er øyeblikkelig, Getir poller hvert 5. sekund. En timesvis cron sammenligner alle tre med master.
- Yemeksepeti 5, Getir 3: master til 5, PATCH Getir
- Master 0, plattform 2: umiddelbar PATCH 0
- Drift > 3: Slack-varsel
FAQ
Må jeg legge inn menyer manuelt på hver plattform? Nei, master record + fan-out automatiserer alt.
Hvem får prioritet ved race? FIFO etter timestamp, taperen får 422.
Er cron manuell? Nei, timesvis på Workers med Slack-varsel ved stort drift.
Var dette nyttig? Del det.
Relaterte artikler
Hva er en QR-meny? Komplett guide for restauranter
En QR-meny gir gjestene øyeblikkelig tilgang til menyen din via smarttelefon — u…
Bytte fra papirmeny til digital QR-meny: steg for steg
Vil du innføre QR-menyer, men vet ikke hvor du skal begynne? Denne guiden dekker…
Geo-målrettede QR-menyer: ulike språk basert på besøkendes IP
Hvordan et 180-seters all-inclusive resort i Antalya ruter samme QR til tyrkiske…