Neljän toimipisteen döner-ketju Izmir Alsancakissa on yhdistetty samanaikaisesti Getir Yemekiin, Trendyol GO:hon ja Yemeksepetiin. Sen sijaan että ylläpitäisi kolmea erillistä menua, he käyttävät thMenuta master recordina; varaston vähennykset tapahtuvat yhdessä paikassa ja webhook fan-out päivittää kolme alustaa.
Master record -arkkitehtuuri
D1_MENU:n sarake products.stock_quantity on ainoa kanoninen lähde. Tilauksen vahvistuksessa: UPDATE products SET stock_quantity = stock_quantity - 1 WHERE id = ? AND stock_quantity > 0. 0 riviä = loppu.
Onnistuessa tapahtuma siirtyy Cloudflare Queueen. Kolme workeria patchaavat rinnakkain API:ja. Keskimääräinen fan-out-viive 340 ms.
Konfliktien ratkaisu
Skenaario: 5 lahmacun varastossa. Samalla sekunnilla saapuu 5 tilausta kolmelta alustalta. Atominen UPDATE sarjallistaa — viimeinen löytää 0:n ja hylätään. Lopputila 0, kolme "loppu" -signaalia.
D1:llä ei ole eksplisiittisiä row lockeja mutta WHERE stock > 0 hoitaa saman roolin. Nolla over-selliä 6 kuukaudessa.
Driftin sovittaminen
Yemeksepetin webhookilla on 30 s viive, Trendyol on välitön, Getir pollaa 5 s välein. Tunnittainen cron vertaa kolmea masteriin.
- Yemeksepeti 5, Getir 3: master 5:een, PATCH Getir
- Master 0, alusta 2: välitön PATCH 0
- Drift > 3: Slack-hälytys
FAQ
Pitääkö menut syöttää käsin joka alustalle? Ei, master record + fan-out automatisoivat kaiken.
Kuka saa prioriteetin race-tilanteessa? FIFO timestampin mukaan, häviäjä saa 422.
Onko cron manuaalinen? Ei, tunneittain Workersilla Slack-hälytyksellä suurelle driftille.
Oliko tästä hyötyä? Jaa se.
Aiheeseen liittyvät artikkelit
Mikä on QR-valikko? Kattava opas ravintoloille
QR-valikko antaa asiakkaille välittömän pääsyn ruokalistallesi älypuhelimen kaut…
Paperisesta ruokalistasta QR-digitaalimenüün: askel askeleelta -opas
Haluatko ottaa QR-menüt käyttöön mutta et tiedä mistä aloittaa? Tämä opas kattaa…
Geokohdistetut QR-ruokalistat: eri kielet vierailijan IP:n mukaan
Miten 180-paikkainen all-inclusive-lomakeskus Antalyassa ohjaa saman QR-koodin t…