>백엔드 개발 >PHP 튜토리얼 >스냅업 기능을 만들 때 동시성을 고려하는 방법

스냅업 기능을 만들 때 동시성을 고려하는 방법

WBOY
WBOY원래의
2016-08-04 09:19:141108검색

회사에서는 급매수 기능을 만들고 싶어
동시성으로 인한 초과 주문을 피하려면 어떻게 해야 할까요?
데이터베이스가 몽고라서 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을 사용하는 것이 편리한 선택이다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.