살아가는 이유_EU
내가 살아가는 이유, 삶
살아가는 이유_EU
전체 방문자
오늘
어제
  • 삶 (159)
    • 이유's EATERY (16)
      • 맛집 (10)
      • 까페 (4)
      • 맛있는 Recipe (1)
    • 이유's LIFE (16)
      • 국내여행 (5)
      • 해외여행 (2)
      • 운동 (1)
      • 취업정보 (0)
      • 끄적끄적 (5)
      • 일기쟝 (3)
      • 세상 이야기 (0)
      • 결혼 준비 (0)
    • 이유's Programming (43)
      • JavaScript (6)
      • Java (7)
      • C++ (0)
      • DBMS (24)
      • Spring (3)
      • til (1)
      • HTTP (2)
    • 이유's REVIEW (13)
      • BOOK (6)
      • PROGRAM or MOVIE (5)
      • PRODUCT 제품리뷰 (2)
    • 이유's STUDY (31)
      • 수업 관련 (2)
      • IT 시사 (2)
      • IT NEWS (2)
      • IVIEW (0)
      • IOS 앱 만들기 (0)
      • 알고리즘 문제풀이 (23)
      • PM data literacy (2)
    • 이유's ENGLISH (13)
      • Writing about something! (12)
      • Feedback (1)
      • TIL (0)
    • 이유's DB 공부 (1)
      • MySQL DB (0)
      • Postgre (1)
    • Computer 공부 (17)
      • Backend question (10)
      • Clean architecture (2)
      • Operating system (2)
      • Network (3)
      • 항해 (0)

블로그 메뉴

  • 홈
  • EATERY's 맛집
  • CAFE 까페
  • Recipe 레시피
  • IT 공부
  • 방명록
  • 태그

공지사항

인기 글

태그

  • 스테이크
  • 인절미 티라미수
  • 용인맛집
  • map 하는 법
  • 아메리카토노
  • 어게인마이라이프
  • 현명하게 리액트
  • memoziation
  • 피지오필로소피
  • 영어공부
  • key 로 접근
  • 송계옥
  • 묵리
  • Array로 접근
  • go hand in hand
  • 고메동 카페
  • have something to do with
  • have something to do with뜻
  • React.memo
  • 삼돈식탁
  • 자바스크립트
  • 용인까페
  • 고메커피
  • 파스타맛집
  • 맛집
  • 자세요정
  • 용인추천
  • 흑임자 크림
  • 렌더링 수 줄이기
  • 스쿤브레드

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
살아가는 이유_EU

내가 살아가는 이유, 삶

Computer 공부/Backend question

3.1.2 기차표 예매 시스템

2024. 11. 12. 20:01
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 테이블에 저장됩니다.
  • 메시지 큐:
    • 실시간 처리와 확장성을 고려하여 메시지 큐 시스템을 사용할 수 있습니다. 이를 통해 대기열을 분산 처리할 수 있고, 사용자가 순차적으로 처리되도록 보장할 수 있습니다.
    • 예: 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
    'Computer 공부/Backend question' 카테고리의 다른 글
    • Kubernetes 공부
    • 실시간 서비스에서 사용자 수가 예상을 초과했을 때?..
    • JWT token api gateway 를 ?
    • Docker / kubernetes 질문 리스트
    살아가는 이유_EU
    살아가는 이유_EU
    안녕하세요. 초보개발자의 일상을 담은 블로그입니다.

    티스토리툴바