재고 카운터를 하나의 원자적(atomic) 장소에 두고 원자적으로 감소시키십시오 — 남은 값을 반환하는 Redis DECR(또는 Lua 스크립트)를 사용합니다. 결과가 < 0이면 그 요청은 실패한 것이며, 데이터베이스는 결코 동시성 게이트가 아닙니다. 나머지는 전부 나머지 99만 9천 건의 요청을 저렴하게 흘려보내는(shed) 일입니다.
아키텍처
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"
