-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
대기열 시스템 설계 #72
Comments
Reference각 글에 출처에 대한 학습도 추천드립니다 Github
대기열 및 MSA, k8s 기반으로 안정적인 콘서트 예매 사이트
기프티콘 선착순 이벤트 (N명 화면에 남은 대기열 표출) https://github.com/donnemartin/system-design-primer#asynchronism 발표 자료 (영상)[우아한테크토크] 선착순 이벤트 서버 생존기! 47만 RPM에서 살아남다?! 키워드
|
@ParkJeongseop 대기열 시스템 메인 이슈 내용을 참고해 더욱 구체화 부탁드립니다. |
고려사항
참고
하나의 자원(=Event)에 대한 각 유저의 Total Wait time을 어떻게 개선할 수 있을까?
동시성 문제(=갱신누락)에 대한 어떤 해결 방법이 있을까?
현재 Raw Lock 사용에서 (크게) 개선할 수 없다.
왜 대기열 시스템이 필요할까?그렇다면 각 유저의 Total Wait Time을 개선할 수 없는데, 왜 대기열을 구현해야할까?
지연이 아니라, 정상 응답 조차 감당할 수 없을 정도로 트래픽이 늘어나면 어떠한 문제점이 발생할까?
대기열 시스템은 트래픽의 안정적 순차 처리에 중점을 둔다.
왜 API 서버로 Non-blocking을 논할까?사례
서블릿 컨테이너는 즉 한 쓰레드당 한개의 요청 밖에 처리하지못한다. 그렇게 되면 I/O 작업이 일어날때 쓰레드는 실질적으로 하고있는것이 없지만 다른요청을 처리하지못한다. 그렇게 되면 자원이 부족한 서버(thread를 많이 만들 수 없는)에서 처리할 수 있는 동시 처리량은 매우 제한적일 것이다. 쓰레드를 많이 만든다하더라도 컨텍스트 스위칭 문제가 생겨서 성능에 많은 부담을 주게된다. 특히 이벤트루프기반 비동기 + 논블록킹 Node.js를 사용하면 트래픽을 효율적으로 처리 가능할 것이다
대기열 데이터는 어떻게 구성할까?대기열(Watting)과 참가열(Running)을 주로 구분하는것을 확인 가능하다 (또는 Status값을 통해...)
또한 Batch를 통해 인입률을 제어한다 (대기열에서 동작열로 이동) 왜 레디스를 사용할까?주로 Redis를 사용하는 이유는 Redis는 싱글 스레드로 돌아가기때문에 대기열 등록에대한 동시성 문제에서도 안전 왜 카프카를 사용할까?출처 Redis의 문제점
|
구현을 최대한 간단하게 해봅시다
|
Description
예약 동시성 이슈와 갑자기 뛰어오르는 트래픽에 대응하기 위해 대기열 시스템을 설계하고자 합니다.
#33 를 참고해 대기열 시스템을 설계해주세요
To do
(상시) 관련 자료 요약/기록
1. 시스템 설계도, 흐름도 등 전반적인 Diagram 설계
2. 단계별 설계
3. 구현 가능한 설계 깊이
Test Checklist
The text was updated successfully, but these errors were encountered: