티스토리 뷰
Producer-Consumer Pattern
생성자-소비자 패턴은 작업물을 가운데 위치 시키고 작업을 생산자와 작업을 처리자를 분리하는 설계 방법이다.
작업을 생성하고 처리하는 부분이 각각 감당할 수 있는 작업을 비동기적으로 처리하여 부하를 조절할 수 있다는 장점을 가진다.
예를 들어, 물건을 주고 받기 위해 물건 보관함을 이용하게 되면 서로 같은 시간에 만나지 않아도 물건을 전달한다 라는 작업을 처리할 수 있다. 이와 같이 비동기적으로 작업 처리를 분할하여 부하를 조절 할 수 있게 된다.
비슷한 맥락의 예시들
- MQ(Message Queue)
- androidx.fragment 에 뷰 통신에 대한 종속성을 분리방법.
- MVVM
구현 코드
Queue
Queue 구현체 ( JobQueue )
Producer ( 공급자 )
Consumer ( 소비자 )
main() 함수
전체 작업 과정
1. Queue에 공급자가 작업물을 넣는다.(PUT)
2. Queue에 작업물이 put 되면 큐 내에 작업물이 한 개 이상이 되기 때문에, Consumer에게 이를 알린다.
3. 대기상태에서 작업 상태과 된 Consumer 들은 Queue 내부에서 작업물을 가져와(POP) 처리한다.
4. Queue 내부 작업물이 비어지게 되면, Consumer는 Moniter에 대기상태가 된다. ( WAIT )
참조
'BackEnd > Java&Kotilin' 카테고리의 다른 글
API Gateway 란? with.Spring Cloud Gateway (0) | 2022.08.26 |
---|---|
서비스 디스커버리(Service Discovery) 는? (0) | 2022.08.25 |
[Java]병렬 스트림( Parellel Stream ) (0) | 2022.08.21 |
[Kotilin] 변수와 함수 선언방법 (0) | 2022.08.16 |
[Java] 자바의 에러와 예외 (0) | 2022.08.15 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 메모리 단편화
- Clean Architecture
- 메모리 파편화
- Session
- Object Pool
- 장애 해결기
- 동적 타입 언어
- Memory Fragmentation
- 수직 분할
- 내부 단편화
- 클린 아키텍처
- SpringBoot 2.2
- pass by value
- 뾰족함
- pass by reference
- OOP
- 정적 타입 언어
- 객체 풀
- Sticky Session
- multimap
- pool
- java
- 외부 단편화
- 컴포짓 패턴
- RestAssured
- 세션 불일치
- 동적 디스패치
- ATDD
- 육각형 아키텍처
- 수평 분할
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함