728x90
반응형
기차표 예매 시스템의 대기열 서버는 사용자 요청을 순서대로 처리하고, 각 사용자에게 대기 번호를 부여하는 형태로 구축할 계획입니다. 대기열에서 사용자의 순서가 되면, 특정 유효 시간을 가진 토큰을 발행하여 사용자가 예매를 진행할 수 있도록 합니다. 이 대기열 서버와 토큰은 어떤 형태로 구축 및 관리하실건가요?
- 대기열 서버는 사용자 요청을 순서대로 처리하고 각 사용자에게 대기 번호를 부여
- 대기열 서버의 경우 이제 비동기 처리이므로 Rabbitq 나 이제 그런 동기 처리를 대기번호를 부여해야함
- 대기열에서 사용자 순서가 되면 특정 유효 시간을 가진 토큰을 발행
1. 대기열 서버 (Queue Server) 설계
대기열 서버는 사용자 요청을 순서대로 처리하고, 각 사용자에게 대기 번호를 부여하는 역할을 합니다. 이를 위해 큐(queue) 자료구조를 사용할 수 있습니다.
- 큐 구조: 큐는 FIFO(First In, First Out) 방식으로, 먼저 대기한 사용자가 먼저 처리되도록 보장합니다.
- 대기열에 사용자가 들어가면 대기 번호가 부여됩니다. 이 대기 번호는 서버의 내부적으로 순차적으로 할당됩니다.
- 대기열의 크기를 제한할 수 있습니다. 예를 들어, 대기열 크기를 설정하여 지나치게 많은 사용자가 대기할 수 없도록 제한합니다.
- 대기열에 사용자 추가:
- 사용자가 시스템에 접근할 때, 시스템은 사용자의 요청을 큐에 추가하고 대기 번호를 부여합니다. 예를 들어, user_id와 함께 queue_number(대기 번호)가 부여됩니다.
- 각 사용자는 대기 번호와 함께 대기열에 포함되며, 이는 사용자에게 나중에 발급되는 토큰을 통해 예매할 수 있는 권한을 나타냅니다.
- 대기열에서 사용자 처리:
- 사용자의 순서가 되었을 때, 시스템은 대기열에서 해당 사용자를 꺼내어 예매 절차를 진행할 수 있도록 합니다.
- 대기열에서 사용자가 꺼내진 후, 해당 사용자에게 토큰을 발급합니다.
2. 토큰 관리
토큰은 사용자가 예매를 진행할 수 있도록 일정 시간 동안 권한을 부여하는 방식입니다. 토큰의 유효 시간 관리가 중요합니다.
- 토큰 발급:
- 대기열에서 사용자의 순서가 되면, 해당 사용자에게 일정 유효 시간을 가진 토큰을 발급합니다. 예를 들어, 토큰은 user_id, 토큰 발급 시간, 유효 시간, 토큰 값 등의 정보를 가질 수 있습니다.
- 토큰의 유효 시간은 예매 시스템에서의 대기 시간이나 예매 가능 시간에 맞게 설정할 수 있습니다.
- 토큰 유효 시간 관리:
- 유효 시간 내에 사용자가 예매를 완료하지 않으면, 토큰이 만료되어 다시 대기열로 돌아가거나 예매할 수 없게 됩니다.
- 유효 시간을 관리하는 방법은 expire_at(만료 시간) 값을 기록해두고, 토큰을 사용하는 시점에서 해당 시간이 지난 경우 토큰을 무효화하면 됩니다.
- 토큰 검증:
- 사용자가 토큰을 가지고 예매를 시도하면, 토큰의 유효성을 검증합니다. 유효한 토큰이라면 예매 절차를 진행하고, 유효하지 않으면 에러 메시지를 반환합니다.
3. 구현 기술 선택
이 시스템을 구현하기 위해 사용될 수 있는 주요 기술은 다음과 같습니다.
- 데이터베이스:
- 대기열 상태와 토큰 정보를 저장하고 관리하기 위해 관계형 데이터베이스(RDBMS) 또는 NoSQL 데이터베이스를 사용할 수 있습니다.
- 예를 들어, 대기열 정보는 queue 테이블에 저장되고, 토큰 정보는 tokens 테이블에 저장됩니다.
- 대기열 상태와 토큰 정보를 저장하고 관리하기 위해 관계형 데이터베이스(RDBMS) 또는 NoSQL 데이터베이스를 사용할 수 있습니다.
- 메시지 큐:
- 실시간 처리와 확장성을 고려하여 메시지 큐 시스템을 사용할 수 있습니다. 이를 통해 대기열을 분산 처리할 수 있고, 사용자가 순차적으로 처리되도록 보장할 수 있습니다.
- 예: RabbitMQ, Kafka, Redis Queue 등이 있습니다.
- 캐시 시스템:
- 토큰의 유효 시간 관리와 대기열 상태를 빠르게 확인하기 위해 Redis와 같은 인메모리 캐시 시스템을 사용할 수 있습니다. 이를 통해 토큰 유효성 검사 및 대기열 상태를 실시간으로 확인하고 관리할 수 있습니다.
728x90
반응형
'Computer 공부 > Backend question' 카테고리의 다른 글
API 설정시 나오는 이슈들.. 정리 (1) | 2024.12.07 |
---|---|
Kubernetes 공부 (0) | 2024.12.04 |
실시간 서비스에서 사용자 수가 예상을 초과했을 때?.. (0) | 2024.11.30 |
JWT token api gateway 를 ? (0) | 2024.11.18 |
Docker / kubernetes 질문 리스트 (0) | 2024.11.17 |