급하게 구매하는 동안 비동기 대기열을 사용하여 주문을 처리합니다. 주문 결과를 실시간으로 사용자에게 알리는 방법은 무엇입니까?
급하게 구매하는 동안 비동기 대기열을 사용하여 주문을 처리합니다. 주문 결과를 실시간으로 사용자에게 알리는 방법은 무엇입니까?
클라이언트는 처리 상태를 얻기 위해 js를 사용하여 인터페이스를 폴링합니다
급한 구매에서 가장 중요한 것은 재고 데이터의 강력한 일관성을 보장하는 것입니다. 급한 구매의 순간적인 트래픽은 매우 큽니다. MySql과 같은 일부 관계형 데이터베이스를 사용하면 이러한 압박을 견디지 못할 수도 있습니다. 일반적으로 redis 등의 캐싱 미들웨어와 결합하여 처리됩니다. 긴급 구매가 시작되기 전에 제품 및 재고 데이터가 Redis에 동기화됩니다. 모든 긴급 구매 작업은 백그라운드에서 비동기 작업이 시작되어 정기적으로 재고 데이터를 데이터베이스에 플러시합니다.
그러면 주문에 대한 결제를 시작하세요. 트래픽이 많기 때문에 타사 결제 시스템 자체도 통화 애플리케이션의 트래픽을 제한하므로 여기서 말씀하신 내용이 다음에 설명되어야 합니다.
여기에서는 메시지 대기열을 사용해야 합니다(즉, 비동기 대기열이라고 함). 높은 트래픽의 영향으로부터 시스템을 보호하고 메시지 대기열을 유발하려면 Taobao Double 11의 현재 제한 조치를 참조할 수 있습니다. 버퍼 보호 계층을 위해 시스템은 창 모델을 설계해야 합니다. 창 모델은 사용자의 절차 상태를 실시간으로 새로 고칩니다.
예를 들어, 사용자는 주문을 하고 결제를 준비한 후 서비스 홀의 서비스 창구로 점프하게 됩니다. 이 때 창구가 가득 찬 경우, 즉 온라인에 도달한 소비자 수는 사용자가 됩니다. 시스템은 대기 창을 팝업하여 사용자가 잠시 기다리도록 할 수 있습니다. 유휴 스레드가 해제되면 사용자는 결제 및 주문을 시작할 수 있습니다.
위 설명은 재고를 줄이기 위해 사진을 찍는 모델을 기준으로 한 것입니다. 귀하가 설계한 시스템이 결제를 통해 재고를 줄이는 것이라면 약간의 차이가 있을 것입니다. 그러나 사용자에게 이러한 창구도 필요합니다. 상태 사용자의 결제가 적시에 성공했지만 사용자에게 상태를 제때에 반환하지 않으며 사용자는 페이지를 통해 자신의 창 상태를 제때에 볼 수 있습니다.