StreamInsight 복구

 

시스템 중단으로 인해 StreamInsight 응용 프로그램의 이벤트 처리가 중단될 경우에 대비해 일반적으로 복구가 끝난 후의 응용 프로그램 출력 품질과 시기 적절성에 대한 요구 사항을 마련해야 합니다.

  1. 출력 스트림의 내용은 중단이 발생하지 않았을 때와 일치해야 합니다.

  2. 중단 기간은 가능하면 짧아야 합니다.

StreamInsight Premium 버전에서는 쿼리 상태를 정기적으로 디스크에 저장하는 검사점 설정 기능을 제공합니다. 이 기능을 원본 및 싱크의 관련 기능과 함께 사용하면 중단을 복구한 후에 동일한 출력 스트림을 확보할 수 있습니다. 제대로 작성된 원본은 캡처된 마지막 검사점 이후의 누락된 이벤트만 재생하므로 복구에 소요되는 시간이 최소한으로 줄어듭니다.

StreamInsight 검사점 작업은 쿼리 상태를 일관된 방식으로 디스크에 보관합니다. 따라서 시스템 중단이 발생할 경우 쿼리를 검사점 시점의 상태로 복원할 수 있습니다.

검사점 설정만으로는 중단이 발생하지 않았을 경우 쿼리에 의해 생성된 이벤트 스트림과 중단이 발생한 후에 생성된 이벤트 스트림의 동일성을 보장할 수 없습니다. 두 가지 문제가 동일성에 영향을 줄 수 있습니다.

  • 이벤트 누락 가능. 검사점 이후 StreamInsight에서 받은 이벤트 및 중단과 복구 사이에 발생한 이벤트는 검사점에 의해 캡처되지 않습니다. 이러한 이벤트는 서버에 다시 제공해야만 쿼리 출력에 포함됩니다. 이 문제를 해결하려면 누락된 이벤트를 재생할 수 있는 원본이 관여해야 합니다.

  • 이벤트 중복 가능. 마지막 검사점 이후, 중단 전에 StreamInsight에서 생성한 이벤트는 원본이 예상대로 이벤트를 재생할 경우 중단을 복구하는 동안 다시 생성됩니다. 이 문제를 해결하려면 중복되는 이벤트를 제거할 수 있는 싱크가 관여해야 합니다.

검사점 로그는 보관된 검사점 정보가 포함된 파일 집합입니다. 이 로그는 서버에 복구를 구성할 때 지정한 디렉터리에 저장됩니다. 이 디렉터리는 StreamInsight 전용으로 예약해야 하며 수정하면 안 됩니다. 또한 각각의 StreamInsight 인스턴스에 대해 고유해야 합니다.

항목 내용

StreamInsight에서는 세 가지 수준의 복구를 구현할 수 있습니다. 요구 사항과 기존 응용 프로그램 원본 및 싱크의 변경 가능 여부에 따라 적절한 복구 수준을 선택할 수 있습니다.

  1. 상태 보존. 원본이나 싱크를 변경하지 않고 검사점을 사용하여 쿼리 상태를 저장할 수 있습니다. 이 복구 수준은 중단을 복구한 후의 결과 스트림이 중단이 발생하지 않았을 때의 스트림과 동일하도록 보장하지 않습니다. 이는 마지막 검사점이 캡처된 후에 발생한 이벤트와 오류 중에 발생한 이벤트가 손실되기 때문입니다. 이 복구 수준은 동일한 결과가 필요 없는 경우와 입력의 일부만으로 거의 올바른 출력을 얻을 수 있는 경우에 적합합니다.

  2. 완전한 출력. 이벤트를 재생할 수 있도록 원본을 변경하여 이벤트가 누락되지 않도록 보장할 수 있습니다. 복구된 쿼리의 출력 스트림은 중단되지 않은 쿼리의 출력 스트림 상위 집합과 논리적으로 동일하며, 남는 이벤트는 중단되지 않은 스트림에 있는 중복 이벤트입니다.

  3. 동일한 출력. 원본을 변경하고 중복 이벤트를 제거하도록 싱크도 변경하여 논리적으로 동일한 출력을 보장할 수 있습니다.

항목 내용

상위 워터마크는 이벤트 스트림의 특정 지점까지 표시된 최고 응용 프로그램 시간입니다. 검사점이 요청되면 StreamInsight는 각 입력에서 다음 상위 워터마크의 변경 내용에 있는 검사점을 캡처합니다.

항목 내용

중단을 복구한 후의 완전하고 동일한 출력을 얻기 위한 필수 구성 요소를 이해하려면 먼저 StreamInsight 검사점 설정으로 저장할 수 없는 이벤트 및 상태에 대해 알아보는 것이 좋습니다. 이러한 이벤트 및 상태는 중단을 복구한 후에도 사용이 가능하도록 별도로 보관되어야 합니다.

검사점 설정으로 저장할 수 없는 이벤트 및 상태해결 방법
마지막 검사점 이후, 중단 전에 도착한 이벤트중단을 복구한 후 재생할 수 있으려면 이러한 이벤트를 데이터 저장소에 보관해야 합니다.
중단 중 도착한 이벤트중단을 복구한 후 사용할 수 있으려면 이러한 이벤트를 데이터 저장소에 보관해야 합니다.
마지막 검사점 이후, 중단 전에 출력으로 생성된 이벤트에 대한 정보복구가 끝난 후 싱크가 중복 이벤트를 제거할 수 있으려면 이러한 이벤트를 데이터 저장소에 보관해야 합니다.
사용자 지정 원본 또는 싱크가 유지 관리하는 모든 상태중단을 복구한 후 사용할 수 있으려면 사용자 지정 원본 또는 싱크가 이 상태를 데이터 저장소에 보관해야 합니다.

항목 내용

중단이 발생한 후 StreamInsight 응용 프로그램을 다시 시작하면 복구 가능한 원본을 초기화하는 호출에서 원본에 상위 워터마크를 제공합니다. 원본은 상위 워터마크에서 해당 입력 스트림을 재생합니다.

모든 원본이 이벤트를 제대로 재생하면 완전한 출력이 보장됩니다.

따라서 출력이 완전하려면 다음과 같은 사항이 충족되어야 합니다.

  • 재생해야 하는 이벤트를 식별할 수 있도록 상위 워터마크를 사용하는 원본이 제공되어야 합니다.

  • 중단 전에 캡처된 마지막 검사점 이후에 발생한 모든 이벤트를 복구가 끝난 후에 사용할 수 있어야 합니다.

  • 중단 중 발생한 모든 이벤트를 복구가 끝난 후에 사용할 수 있어야 합니다.

  • 모든 원본이 이러한 이벤트를 제대로 재생해야 합니다.

  • 검사점을 설정하고 쿼리 상태를 복구해야 합니다.

항목 내용

출력 스트림에서의 검사점 위치를 확인하기 위해 복구 가능한 싱크를 초기화하는 호출이 상위 워터마크 및 상위 워터마크의 검사점 표식에 대한 오프셋을 제공합니다.

쿼리가 제대로 재생되면 내부 쿼리 상태는 마지막 검사점 시점의 상태가 되고 마지막 검사점이 캡처된 후에 생성된 이벤트는 시스템을 다시 시작하면 다시 생성됩니다. 즉, 마지막 검사점 이후, 중단 전에 출력으로 생성된 모든 이벤트는 복구 중 한 번 더 생성됩니다. 이것이 바로 싱크가 제거해야 하는 중복 항목입니다. 이벤트 제거 방법은 싱크에 따라 다릅니다. 예를 들어 중복 이벤트 복사본을 무시하는 방법이 있습니다.

모든 원본이 이벤트를 제대로 재생한 후 모든 싱크가 중복 이벤트를 제대로 제거하면 동일한 출력이 보장됩니다.

따라서 동일한 출력을 보장하려면 위에 나온 완전한 출력에 대한 요구 사항과 함께 다음과 같은 요구 사항을 충족해야 합니다.

  • 제거하거나 무시해야 하는 이벤트를 식별할 수 있도록 상위 워터마크 및 오프셋을 사용하는 싱크가 제공되어야 합니다.

  • 중단 전에 캡처된 마지막 검사점 이후에 발생한 모든 이벤트를 복구가 끝난 후에 사용할 수 있어야 합니다. 스트림에서 이 위치는 복구 후 다시 만들 때 싱크에 제공된 상위 워터마크 및 오프셋을 통해 식별됩니다.

  • 모든 싱크가 중복 이벤트를 제대로 제거해야 합니다.

항목 내용

복구 가능한 StreamInsight 응용 프로그램 빌드, 모니터링 및 문제 해결에 대한 자세한 내용은 다음 항목을 참조하십시오.

재생 및 중복 제거를 비롯하여 복구 가능한 응용 프로그램의 전체 코드 샘플은 Codeplex의 StreamInsight 샘플 페이지에서 StreamInsight 2.1 검사점 설정 샘플을 참조하십시오.

항목 내용

표시: