다음을 통해 공유


조직 인터페이스 버전 관리

이 문서에서는 조직 인터페이스 버전 관리를 사용하는 방법을 알아봅니다. 조직 상태의 버전 관리가 범위를 벗어났습니다.

개요

지정된 클러스터에서 사일로는 다양한 버전의 조직 형식을 지원할 수 있습니다.

Cluster with different versions of a grain

이 예제에서는 클라이언트와 사일로{1,2,3}가 조직 인터페이스 A 버전 1로 컴파일되었습니다. 사일로 4는 A 버전 2로 컴파일되었습니다.

제한 사항

  • 상태 비저장 작업자에 대한 버전 관리 없음
  • 스트리밍 인터페이스의 버전이 지정되지 않음

버전 관리 사용

버전 특성이 조직 인터페이스에 명시적으로 추가되지 않은 경우 조직의 기본 버전은 0입니다. 조직 인터페이스에서 VersionAttribute를 사용하여 조직을 버전화할 수 있습니다.

[Version(X)]
public interface IVersionUpgradeTestGrain : IGrainWithIntegerKey
{
}

여기서 X는 일반적으로 단조롭게 증가하는 조직 인터페이스의 버전 번호입니다.

조직 버전 호환성 및 배치

버전이 지정된 조직의 호출이 클러스터에 도착하는 경우:

  • 활성화가 없으면 호환되는 활성화가 생성됩니다.
  • 활성화가 있는 경우:
    • 현재 항목이 호환되지 않으면 비활성화되고 호환되는 새 항목이 만들어집니다(버전 선택기 전략 참조).
    • 현재 항목이 호환되는 경우(호환되는 조직 참조) 호출이 정상적으로 처리됩니다.

기본적으로:

  • 버전이 지정된 모든 조직은 이전 버전과 호환되어야 합니다(이전 버전과의 호환성 지침호환되는 조직 참조). 즉, v1 조직은 v2 조직을 호출할 수 있지만 v2 조직은 v1을 호출할 수 없습니다.
  • 클러스터에 여러 버전이 있는 경우 새 활성화는 호환되는 사일로에 임의로 배치됩니다.

이 기본 동작은 GrainVersioningOptions를 통해 변경할 수 있습니다.

var silo = new HostBuilder()
    .UseOrleans(c =>
    {
        c.Configure<GrainVersioningOptions>(options =>
        {
            options.DefaultCompatibilityStrategy = nameof(BackwardCompatible);
            options.DefaultVersionSelectorStrategy = nameof(MinimumVersion);
        });
    });