다른 유형의 사일로 개요

지정된 클러스터에서 사일로는 다른 조직 형식의 세트를 지원할 수 있습니다.

Heterogeneous silos overview diagram.

이 예제에서 클러스터는 A, B, C, D, E 형식의 조직을 지원합니다.

  • AB 조직 형식은 사일로 1 및 2에 배치할 수 있습니다.
  • C 조직 형식은 사일로 1, 2 및 3에 배치할 수 있습니다.
  • D 조직 형식은 사일로 3에만 배치할 수 있습니다.
  • E 조직 형식은 사일로 4에만 배치할 수 있습니다.

모든 사일로는 클러스터의 모든 조직 형식의 인터페이스를 참조해야 하지만, 조직 클래스는 해당 항목을 호스트할 사일로에서만 참조해야 합니다. 클라이언트는 지정된 조직 형식을 지원하는 사일로를 알지 못합니다.

중요

지정된 조직 형식 구현은 이를 지원하는 각 사일로에서 동일해야 합니다.

다음 시나리오는 잘못되었습니다.

사일로 1 및 2에서:

public class C: Grain, IMyGrainInterface
{
   public Task SomeMethod() { /* ... */ }
}

사일로 3에서:

public class C: Grain, IMyGrainInterface, IMyOtherGrainInterface
{
   public Task SomeMethod() { /* ... */ }
   public Task SomeOtherMethod() { /* ... */ }
}

구성

구성이 필요하지 않으며 클러스터의 각 사일로에 서로 다른 이진 파일을 배포할 수 있습니다. 그러나 필요한 경우 사일로와 클라이언트가 TypeManagementOptions.TypeMapRefreshInterval 속성에서 지원되는 형식의 변경 내용을 확인하는 간격을 변경할 수 있습니다.

테스트 목적으로 사일로에서 제외하려는 형식의 이름 목록인 GrainClassOptions.ExcludedGrainTypes 속성을 사용할 수 있습니다.

제한 사항

  • 지원되는 조직 형식의 세트가 변경된 경우 연결된 클라이언트에 알림이 표시되지 않습니다. 이전 예제에서는 다음을 수행했습니다.
    • 사일로 4가 클러스터를 벗어난 경우 클라이언트가 여전히 E 조직 형식을 호출하려고 합니다. OrleansException을 사용하여 런타임에 실패합니다.
    • 사일로 4가 연결되기 전에 클라이언트가 클러스터에 연결된 경우 클라이언트는 E 조직 형식을 호출할 수 없습니다. ArgumentException으로 실패합니다.
  • 상태 비저장 조직은 지원되지 않습니다. 클러스터의 모든 사일로는 동일한 상태 비저장 조직의 세트를 지원해야 합니다.
  • ImplicitStreamSubscriptionAttribute은(는) 지원되지 않으므로 Orleans Streams에서 명시적 구독만 사용할 수 있습니다.