오케스트레이션 디하이드레이션 및 리하이드레이션
여러 개의 장기 실행 비즈니스 프로세스를 동시에 실행하면 메모리 및 성능 문제가 발생할 수 있습니다. 오케스트레이션 엔진은 오케스트레이션 인스턴스를 "디하이드레이션" 및 "리하이드레이션"하여 이러한 문제를 해결합니다.
디하이드레이션은 오케스트레이션의 상태를 SQL Server 데이터베이스로 serialize하는 프로세스입니다. 리하일레이션은 데이터베이스에서 오케스트레이션의 마지막 실행 상태를 역직렬화하는 프로세스의 반대입니다. 디하이드레이션은 메모리에서 한 번에 인스턴스화되어야 하는 오케스트레이션 수를 줄여 시스템 리소스의 사용을 최소화하는 데 사용됩니다.
Dehydration
오케스트레이션 엔진에서 오케스트레이션 인스턴스가 비교적 긴 시간 동안 유휴 상태에 있었음을 감지하는 경우가 있습니다. 엔진은 임계값을 계산하여 여러 작업이 수행되기까지 기다리는 시간을 결정하고 임계값이 초과되면 인스턴스를 디하이드레이션합니다. 이러한 상황은 다음과 같은 경우에 발생할 수 있습니다.
오케스트레이션이 메시지 수신을 기다리는 중 대기 시간이 엔진에서 결정한 임계값보다 긴 경우
오케스트레이션이 메시지에 대해 "수신 대기"되는 경우, 수신 대기 셰이프를 사용할 때와 마찬가지로 엔진에서 결정하는 임계값 전에 분기가 트리거되지 않습니다. 이에 대한 유일한 예외는 수신 대기 셰이프에 활성화 수신이 포함된 경우입니다.
오케스트레이션의 지연 시간이 엔진에서 결정한 임계값보다 긴 경우
엔진은 상태를 저장하여 인스턴스를 디하이드레이션하고 이 인스턴스에 사용되던 메모리를 비웁니다. 엔진은 유휴 오케스트레이션 인스턴스를 디하이드레이션하여 여러 장기 실행 비즈니스 프로세스가 동일한 컴퓨터에서 동시에 실행될 수 있도록 만듭니다.
BizTalk Server에서 디하이드레이션이 작동되는 방법을 구성하기 위해 설정할 수 있는 속성에는 12가지가 있습니다. 이 섹션의 항목에서는 이러한 속성 및 기본값을 나열하여 설명하고 다양한 값이 디하이드레이션 동작에 미치는 영향에 대해 설명합니다.
리하드레이션
메시지가 수신되거나 Delay 셰이프에 지정된 시간 제한이 만료될 때 오케스트레이션 인스턴스를 리하이드레이션하도록 오케스트레이션 엔진을 트리거할 수 있습니다. 그런 다음 엔진은 저장된 오케스트레이션 인스턴스를 메모리에 로드하고, 해당 상태를 복원하고, 중단된 시점에서부터 인스턴스를 다시 실행합니다. 오케스트레이션에서 셰이프를 사용하는 방법에 대한 자세한 내용은 오케스트레이션 셰이프를 참조하세요.
오케스트레이션을 두 개 이상의 서버에서 실행하도록 구성할 수 있습니다. 오케스트레이션 인스턴스를 디하이드레이션한 다음에 이러한 서버 중 한 곳에서 리하이드레이션할 수 있습니다. 한 서버가 다운되면 엔진이 다른 서버에서 이전 상태에 이어서 오케스트레이션을 계속 실행합니다. 엔진은 또한 이 기능을 사용하여 서버 간 로드 균형 조정을 구현합니다.