Job Queue
지난 시간에는 채팅 테스트를 인원 수(1, 10, 100명)를 설정한 후 직접 실행해보는 시간을 가졌다. 이 때 인원이 늘어남에 따라 나타나는 부하의 문제점을 확인하였다. 이를 처리하기 위한 기능이 Job, Task인 것을 알았으니 오늘은 이를 학습해보는 시간을 가져보자. 😎
🖥️ Command Pattern
지금 작성한 스크립트의 문제점은 쓰레드가 일감을 받으면, 아래 이미지와 같이 다른 사람에게 일을 시키는 것이 아닌 일감을 받음과 동시에 이를 처리까지 모두 하고 있는 것이 문제되는 것이다. 이 때 lock의 특성까지 더 해져 한번에 하나의 쓰레만을 이용하여 일을 진행하다보니, 대기하는 쓰레드들이 쌓이는 것이다.
그래서 이를 해결하기 위해서는 아래 이미지와 같이 다른 쓰레드들은 Queue(큐, =일감 저장소)에 일감을 그냥 두고가고 (저장), 일을 전문적으로 처리하는 쓰레드를 만들어 해당 직원이 일감을 모두 해결하는 방식으로 진행할 것이다.
또한 커맨드 패턴은 정보처리기사 디자인 패턴에 나왔던 내용인데 한번 더 복기하자면 아래와 같다.
🎈 생성, 구조, 행위 패턴 중 행위 패턴의 일부였던 Command Pattern
하나의 추상 클래스에 메서드를 만들어 각 명령이 들어오면 그에 맞는 서브 클래스가 선택되어 실행된다. 따라서 실행될 기능을 캡슐화함으로써 주어진 여러 기능을 실행 할 수 있는 재사용성이 높은 클래스를 설계하는 패턴이다. 즉 사용자의 요구사항을 객체로 캡슐화하는 것이다.
'공부 > 인프런 - Rookiss' 카테고리의 다른 글
Part 4-5-5. Job Queue : Job Queue #2 (0) | 2023.12.28 |
---|---|
Part 4-5-4. Job Queue : Job Queue #1 (0) | 2023.12.27 |
Part 4-5-2. Job Queue : 채팅 테스트 #2 (1) | 2023.12.26 |
Part 4-5-1. Job Queue : 채팅 테스트 #1 (1) | 2023.12.23 |
Part 4-4-11. 패킷 직렬화 : Packet Generator #6 (0) | 2023.12.22 |