Skip to content
FunkcjeCennikPartnerzyBlogPomocO nasKontakt
Zacznij terazZaloguj się
Powrót do Bloga
guides2026-07-216 min czytania

Jeden magazyn, trzy marketplace: integracja Getir + Trendyol GO + Yemeksepeti

Sieć döner z 4 oddziałami w Izmirze obsługuje trzy tureckie platformy dostaw z jednego menu. Master record thMenu, webhook fan-out i atomowy UPDATE D1.

th

thMenu Team

thmenu.com

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.