회사에서는 급매수 기능을 만들고 싶어
동시성으로 인한 초과 주문을 피하려면 어떻게 해야 할까요?
데이터베이스가 몽고라서 mysql처럼 lock이 안되네요
좋은 해결책이 없을까요?
Redis를 사용해서 큐에 강제로 넣고 싶은데 이건 너무 말도 안 돼요..
만들 때마다 확인하겠지만 그 작은 동시성이 두렵습니다..
회사에서는 급매수 기능을 만들고 싶어
동시성으로 인한 초과 주문을 피하려면 어떻게 해야 할까요?
데이터베이스가 몽고라서 mysql처럼 lock이 안되네요
좋은 해결책이 없을까요?
Redis를 사용해서 큐에 강제로 넣고 싶은데 이건 너무 말도 안 돼요..
만들 때마다 확인하겠지만 그 작은 동시성이 두렵습니다..
이 문제는 메시지 대기열을 사용하여 해결할 수 있습니다
우선 디자인 역량이 있어야 합니다. 귀하의 프로젝트는 최대한 많은 사람들을 수용하여 최대한 많은 제품을 확보할 수 있도록 준비되었습니다. 그런 다음 어떤 기술을 사용할지 결정합니다.
10명만 경쟁한다면 걱정하지 마세요. 관계형 데이터베이스만 찾으면 끝납니다.
더 많은 기능을 사용하면 mongodb에 직접 압력을 가할 수 있습니다. 그런데 mongodb는 잠금이 없으며 $inc 연산자를 사용하면 더 이상 판매하지 않을 수 있습니다. 예:
<code>db.product.update({sku: 'xxx', qty: {$gt: 0}}, {$inc: {qty: -1}})</code>
이것으로 충분하지 않다면 대기열을 고려해 보세요
이러한 스냅 요구에는 금융 기능이 포함되며, 금융 기능에는 반드시 잠금 기능이 필요합니다.
그러므로 능숙하다면 미들웨어를 직접 작성하세요. 게으르다면 mysql을 사용하세요.
핫셀 상품을 보관할 수 있는 별도의 시계를 제작하세요
Redis는 이를 구현할 수 있어야 합니다. Redis 자체는 단일 스레드이며 작업이 자연스럽게 직렬화되어 있으므로 동시 액세스에 대해 걱정할 필요가 없습니다. 물론 mysql을 사용하는 것이 편리한 선택이다.