在庫カウンターを単一のアトミックな場所に保持し、アトミックにデクリメントします。残数を返すRedisの DECR(またはLuaスクリプト)を使います。結果が < 0 なら、そのリクエストは負けです。データベースは決して並行性のゲートにしてはいけません。残りは、他の999,000リクエストをいかに安価に切り捨てるかの話です。
アーキテクチャ
text
1M clients ─▶ CDN/edge (waiting room, drop bots) ─▶ LB
│
Stateless API pods
│
Redis: DECR stock (Lua: check+dec+record)
│hit>=0 │miss<0
▼ ▼
enqueue order ─▶ DB reject "sold out"
