Příhoz v posledních vteřinách

Navržená cesta časované aukce: jeden zapisovatel, append-only log a prodloužený konec

Příhoz v posledních vteřinách Navržená cesta časované aukce: jeden zapisovatel, append-only log a prodloužený konec příhoz 1 250 000 Kč příhoz + klíč idempotence zápis BID_PLACED seq 4127 potvrzeno přijato, vedete rozeslání nové nejvyšší limit zvyšuje na 1 300 000 zápis BID_PLACED (limit) přeplaceno, konec o 2 min dál do fronty upozornění e-mail a push zvýšit na 1 350 000 Kč? Odeslání Seřazení a zápis Reakce limitu a upozornění Dražitel · přihlášený · Sequence participant Dražitel přihlášený Panel příhozů · WebSocket · Sequence participant Panel příhozů WebSocket Dražebna · jedna na aukci · Sequence participant Dražebna jedna na aukci PostgreSQL · append-only log · Sequence participant PostgreSQL append-only log Protistrana · uložený limit · Sequence participant Protistrana uložený limit Fronta · pošta a push · Sequence participant Fronta pošta a push Legend request return async trace default message

Proč tu nemůže vzniknout závod

  • • Dražební místnost zpracuje vždy jen jednu zprávu
  • • Příhozový žebříček se kontroluje ve stejném kroku
  • • Klíč idempotence dělá z opakovaného odeslání neškodnou operaci
  • • Žádný advisory zámek, žádná optimistická smyčka

Proč je log jen pro přidávání

  • • Každý příhoz je neměnná událost s pořadovým číslem
  • • Aktuální nejvyšší příhoz je projekce, ne uložené pole
  • • Spornou dosaženou cenu lze zrekonstruovat i po měsících
  • • Auditorovi i majiteli díla lze ukázat celý žebříček

Prodloužený konec

  • • Příhoz v posledních dvou minutách posune konec aukce
  • • Časovač je uvnitř téhož objektu jako stav
  • • Dražení na poslední chvíli přestane být výhodné
  • • Prodloužení se rozešle všem sledujícím najednou