본문 바로가기
백엔드/Java

병목현상 방지

by 1005ptr 2018. 5. 16.
반응형

JobXXX란 클래스는 Quartz 라이브러리를 통해 0.5초에 한번 실행된다.


명령내역 변경이력 테이블에서 처리되지 않은 데이터를 가져와 시간 순서대로 하나씩 처리를 해야하는데

이 때 맨 처음 데이터가 데이터의 결함등으로 처리되지 못하고 Queue를 꽉 틀어막을 수 있다


이를 해결하기 위해 DB에서 데이터를 가져온 후 이를 장비별로 분류하여 Queue에 담아 처리한다.

데이터를 담는 자료구조를 List<VO>에서 HashMap<장비명, Queue<VO>>로 변경했다


이전 방식




변경된 방식

이전 방식이 한줄로 처리됐다면, 변경된 방식에서는 장비별로 각자의 처리라인이 생겼다

이렇게 함으로써 중간 처리과정이 복잡해졌지만 안정성이 높아졌다고 할 수 있다

복잡해진 처리 과정

1. 데이터가 있는지 확인할 때 각 큐 별로 비어있는지 확인이 필요

2. 데이터를 DB에서 읽어와 추가할 때 분류 필요

3. 삭제할 때 큐 별로 모두 접근해야 함

4. 데이터를 가져올 때 큐 별로 접근해야 함

반응형

'백엔드 > Java' 카테고리의 다른 글

람다 인터페이스들  (0) 2018.06.26
람다와 함수형 인터페이스  (0) 2018.06.25
이너 클래스/로컬 클래스/익명 클래스/람다  (0) 2018.06.21
람다의 표현식  (0) 2018.06.06
람다  (0) 2018.06.06

댓글