Sieć döner z 4 oddziałami w Izmirze Alsancak jest jednocześnie podłączona do Getir Yemek, Trendyol GO i Yemeksepeti. Zamiast trzech osobnych menu używają thMenu jako master record; dekrementy stanu odbywają się w jednym miejscu, a webhook fan-out aktualizuje trzy platformy.
Architektura master record
Kolumna products.stock_quantity w D1_MENU jest jedynym kanonicznym źródłem. Przy potwierdzeniu zamówienia: UPDATE products SET stock_quantity = stock_quantity - 1 WHERE id = ? AND stock_quantity > 0. 0 wierszy = wyczerpane.
Po sukcesie event trafia do Cloudflare Queue. Trzech workerów równolegle PATCHuje API. Średnia latencja fan-out 340 ms.
Rozwiązywanie konfliktów
Scenariusz: 5 lahmacun na stanie. W tej samej sekundzie wpływa 5 zamówień z trzech platform. Atomowy UPDATE serializuje — ostatni znajduje 0 i jest odrzucony. Stan końcowy 0, trzy sygnały "brak".
D1 nie ma jawnych row lock, ale WHERE stock > 0 pełni tę samą rolę. Zero over-sellingu w 6 miesięcy.
Uzgadnianie driftu
Webhook Yemeksepeti ma 30 s opóźnienia, Trendyol jest natychmiastowy, Getir poll'uje co 5 s. Godzinny cron porównuje trzy z masterem.
- Yemeksepeti 5, Getir 3: master na 5, PATCH Getir
- Master 0, platforma 2: natychmiastowy PATCH 0
- Drift > 3: alert Slack
FAQ
Czy menu trzeba wprowadzać ręcznie na każdej platformie? Nie, master record + fan-out automatyzują wszystko.
Kto ma priorytet przy race? FIFO po timestamp, przegrany dostaje 422.
Cron jest manualny? Nie, co godzinę na Workers z alertem Slack.
Czy to było pomocne? Udostępnij.
Powiązane artykuły
Czym jest menu QR? Kompletny przewodnik dla restauracji
Menu QR umożliwia klientom natychmiastowy dostęp do karty dań przez smartfon — b…
Przejście z papierowego na cyfrowe menu QR: przewodnik krok po kroku
Chcesz wdrożyć menu QR, ale nie wiesz od czego zacząć? Ten przewodnik obejmuje f…
Geo-targetowane menu QR: różne języki w zależności od IP gościa
Jak resort all-inclusive na 180 miejsc w Antalyi kieruje ten sam kod QR do menu …