Index / Snippets / Ordercapaciteit reserveren en vrijgeven

Ordercapaciteit reserveren en vrijgeven met een event stream

Immutable events en negatieve orders in plaats van tellers.

Beantwoordt
Hoe reserveer je capaciteit voor een online bestelling terwijl de betaling nog loopt?
Onderwerpen
data · ecommerce · lemmid-store · payments · server · work
Volledig artikel op willem.com
https://willem.com/nl/2020-12-02_het-ontwerpen-van-een-multidimensionale-capaciteitswachtrij/

Samenvatting

Sla elke bestelling op als een onveranderlijk event met timestamp en reserveer capaciteit zodra de bestelling wordt geplaatst. Mislukt de betaling of wordt de bestelling afgebroken, voeg dan een negatieve order met dezelfde bezorgtijd toe om de capaciteit vrij te geven.

Volledige tekst

Ik bouwde dit voor mijn food ordering app, waar drie capaciteitsdimensies op elkaar inwerken: keuken, afhalen en bezorgen, elk met een eigen tijdspanne, zeg 10 gerechten per 15 minuten tegenover 3 bezorgingen per 30 minuten. Het ontwerp volgt de Lambda Architecture: een append-only stroom van onveranderlijke events met timestamp, verwerkt door een realtime speed layer en een batch precomputation layer. Elke bestelling is een event; het annuleren van drie pizza's voegt een negatieve order van min drie pizza's toe met dezelfde bezorgtimestamp, waardoor de gereserveerde capaciteit vrijkomt zonder ooit een record te wijzigen. Metrics worden berekend uit de echte streamdata in RAM. De eerste query initialiseert een model uit historische data in batch, realtime updates houden het actueel zolang het gevraagd wordt, en antwoorden komen binnen milliseconden.

Machineformaten van deze pagina