플로우 우선순위
실행 대기 중인 다른 플로우와 관련하여 배경 플로우에 부여하고자 하는 우선순위를 지정합니다. 우선순위가 낮은 플로우를 실행하기 전에 우선순위가 높은 플로우 그룹을 실행합니다.
백그라운드에서 실행되는 플로우에 대해서만 플로우 우선순위를 설정할 수 있습니다. 백그라운드 흐름은 사용 가능한 다음 작업자 스레드에서 실행됩니다. 기본적으로 워크플로우 스튜디오 사용 가능한 작업자 스레드의 최대 절반을 사용하여 백그라운드 흐름을 실행할 수 있습니다. 흐름을 실행하는 데 사용할 수 있는 작업자 스레드가 없는 경우 흐름을 실행할 수 있는 작업자 스레드가 있을 때까지 흐름이 큐에 대기됩니다.
- 높음
- 보통
- 낮음
흐름 우선 순위를 설정하면 작업자 스레드가 큐에서 흐름을 선택하는 순서가 결정됩니다. 작업자 스레드는 우선 순위가 낮은 흐름을 실행하기 전에 우선 순위가 높은 여러 흐름을 실행합니다. 이 우선순위 체계를 사용하면 큐에 우선순위가 높은 플로우가 있는 경우에도 우선순위가 낮은 플로우가 실행됩니다. 실행할 작업 큐가 큰 경우 우선 순위가 낮은 대부분의 흐름은 우선 순위가 높은 흐름이 실행될 때까지 기다려야 합니다. 우선 순위가 높은 흐름이 실행된 후 작업자 스레드는 우선 순위가 낮은 흐름을 실행할 수 있습니다.
또한 플로우는 어떤 이유로든 일시 중지될 경우 우선순위 값을 잃게 됩니다. 일시 중지에서 재개되는 플로우는 기본 중간 우선순위에서 실행됩니다. 예를 들어 플로우가 높은 우선순위로 실행되기 시작한 다음 일정 시간 동안 대기하기 위해 일시 중지될 수 있습니다. 플로우 실행이 재개되면 중간 우선순위로 실행됩니다.
우선순위가 낮은 플로우의 자동 일시 중지
기본적으로 시스템은 우선순위가 높은 플로우가 우선순위가 낮은 플로우를 실행하여 차단되는 케이스를 확인합니다. 낮은 우선순위가 2분 이상 실행될 때마다 시스템은 우선순위가 높은 플로우가 지난 5분 동안 실행되었는지 확인합니다. 우선순위가 높은 플로우가 최근에 실행되지 않은 경우 시스템은 이벤트 큐에서 실행 대기 중인 플로우 수를 확인합니다. 이벤트 큐에서 실행 대기 중인 우선 순위가 높은 플로우가 100개 이상 백로그가 있는 경우, 우선 순위가 낮은 플로우의 실행 중이 일시 중지됩니다. 플로우를 일시 중지하면 컨텍스트와 데이터가 보존됩니다. 일시 중지된 플로우는 처리할 수 있는 작업자가 있을 때 실행할 이벤트 큐로 돌아갑니다.
우선순위가 낮은 플로우가 예상대로 실행되지 않는 경우, 시스템에서 생성하고 실행하는 우선순위가 높은 플로우의 수를 검토합니다. 플로우를 높음 또는 낮음 우선순위로 설정해야 하는 경우에 대한 설계 고려 사항을 참조하십시오. 우선순위가 낮은 플로우가 아직 실행되고 있지 않은 경우, 시스템 속성으로 우선순위가 낮은 플로우의 일시 중지를 비활성화할 수 있습니다. com.glide.hub.pause_low_priority_flows_enabled 속성의 값을 변경하려면 을 참조하십시오 워크플로우 스튜디오 플로우 시스템 속성 .
빠른 API 지원
빠른 API 메서드는 플로우 우선순위 값을 지원하지 않습니다. 빠른 API 메서드로 실행되는 플로우는 이전에 정의된 플로우 우선순위 설정을 무시하고 대신 중간 우선순위로 실행됩니다.
디자인 고려 사항
플로우 우선순위를 설정할 때 다음 설계 고려 사항을 따르십시오.
- 모든 플로우가 높은 우선순위로 실행되도록 설정하지 마십시오.
- 모든 플로우를 높은 우선순위로 설정하기보다는 여러 우선순위를 혼합하여 사용합니다. 작업자 스레드는 흐름 간의 상대적 우선 순위를 사용하여 작업을 선택합니다. 모든 플로우가 높은 우선순위로 실행되면 대기할 우선순위가 낮은 플로우가 없습니다.
- 일시 중지해야 하는 플로우에 대해 플로우 우선순위를 설정하지 않도록 합니다.
- 일시 중지된 플로우는 실행을 다시 시작할 때 우선순위 값을 잃게 되므로 일시 중지해야 하는 플로우는 기본 중간 우선순위에서 계속 유지됩니다.
- 비즈니스 크리티컬 플로우에 높은 우선순위 사용
- 비즈니스 가치가 높고, 거의 실행되지 않으며, 런타임이 짧은 플로우로 높은 우선순위를 제한합니다. 대용량 플로우를 높은 우선 순위로 설정하면 다른 플로우를 실행하는 데 사용할 수 있는 작업자 스레드 수가 제한되므로 설정하지 마십시오. 우선 순위가 높은 흐름을 오래 실행하면 다른 흐름을 실행하는 데 사용할 수 있는 작업자 스레드도 줄어들 수 있습니다.
- 대량 플로우에 낮은 우선순위 사용
- 시간에 민감한 다른 플로우를 먼저 실행할 수 있도록 낮은 우선순위로 대용량 플로우를 실행합니다. 우선 순위가 낮은 흐름은 시간에 민감하지 않아야 합니다.
- 시간에 민감한 플로우에 중간 우선순위 사용
- 플로우가 다른 플로우와 비교할 때 어느 정도 시간 긴급도가 있는 경우 기본 플로우 우선순위를 사용합니다.