지정된 클러스터에서 사일로는 다음과 같은 다양한 곡물 형식 집합을 지원할 수 있습니다.
이 예제에서 클러스터는 형식 A
, B
, C
, D
, 및 E
의 곡물을 지원합니다.
- 곡물 형식
A
이며B
사일로 1과 2에 배치할 수 있습니다. - 곡물 유형
C
은 사일로 1, 2 또는 3에 배치할 수 있습니다. - 곡물 유형
D
은 사일로 3에만 배치할 수 있습니다. - 곡물 유형
E
은 사일로 4에만 배치할 수 있습니다.
모든 사일로는 클러스터에 있는 모든 곡물 형식의 인터페이스를 참조해야 하지만, 그레인 클래스는 해당 클래스를 호스트하는 사일로에서만 참조해야 합니다. 클라이언트는 지정된 곡물 형식을 지원하는 사일로를 모릅니다.
중요합니다
지정된 곡물 형식 구현은 이를 지원하는 각 사일로에서 동일해야 합니다.
다음 시나리오는 유효 하지 않습니다 .
Silo 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 속성을 사용할 수 있습니다.
제한점
- 지원되는 곡물 형식 집합이 변경되면 연결된 클라이언트에 알림이 표시되지 않습니다. 이전 예제에서는 다음을 수행합니다.
- Silo 4가 클러스터를 벗어나면 클라이언트는 여전히 형식
E
의 곡물을 호출하려고 합니다. 런타임 중 오류 OrleansException로 실패합니다. - Silo 4가 조인되기 전에 클라이언트가 클러스터에 연결된 경우 클라이언트는 형식
E
의 곡물을 호출할 수 없습니다. ArgumentException 때문에 실패합니다.
- Silo 4가 클러스터를 벗어나면 클라이언트는 여전히 형식
- 상태 비저장 곡물은 다른 유형의 배포에서 지원되지 않습니다. 클러스터의 모든 사일로는 동일한 상태 비저장 곡물 집합을 지원해야 합니다.
- ImplicitStreamSubscriptionAttribute은 지원되지 않으므로, 이질적인 사일로가 있는 Streams에서는 Orleans만 사용할 수 있습니다.
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET