A. Sportsbook Bet Placement¶
Тип материала — инженерный walkthrough. HYPOTHETICAL — модель и схемы.
Архитектура и владельцы¶
flowchart LR
A["Player API"] --> B["Acceptance service"] --> C["Bet and wallet DB"] --> D["Outbox relay"]
Контракт и нормальная последовательность¶
Вход tenant/key, quote_version, stake_minor, currency. Acceptance владеет outcome, wallet DB — reserve. API проверяет identity, лимит и действительность quote; commit создаёт bet и hold.
sequenceDiagram
participant A as Player API
participant B as Acceptance service
participant C as Bet and wallet DB
participant D as Outbox relay
A->>B: Send versioned input
B->>C: Commit bet and hold
C-->>B: Return durable evidence
B->>D: Advance downstream processing
Отказ и replay¶
Commit успешен, ответ потерян. Второй запрос с тем же key читает outcome; новый key проверяет остаток. Relay догоняет committed outbox, сохраняя event ID.
sequenceDiagram
participant B as Acceptance service
participant C as Bet and wallet DB
participant O as Recovery owner
B->>C: Attempt operation
Note over B,C: Lost response after commit
O->>C: Read outcome by original key
C-->>O: Verified state or explicit pending
Мониторинг и сверка¶
Сверить accepted IDs, holds, outbox frontier. Измерять pending age, rejected stale quotes и lock waits.
Альтернативы¶
Local commit упрощает инвариант. Remote reserve требует pending, fenced finalization и протокола release.
Распределённый runtime сценария NOT_RUN. Локальные примеры