조직 조정 특성
개발자는 클러스터가 특정 조직 클래스와 관련하여 조직 디렉터리를 언제 어떻게 조정해야 하는지 나타낼 수 있습니다. GlobalSingleInstanceAttribute는 단일 글로벌 클러스터에서 Orleans를 실행할 때와 동일한 동작을 원한다는 것을 뜻합니다. 즉, 모든 호출을 조직의 단일 활성화로 라우팅합니다. 반대로 [OneInstancePerCluster]
특성은 각 클러스터가 독립적인 활성화를 가질 수 있음을 나타냅니다. 이는 클러스터 간 통신을 원치 않는 경우에 적합합니다.
특성은 조직 구현에 배치됩니다. 예시:
using Orleans.MultiCluster;
[GlobalSingleInstance]
public class MyGlobalGrain : Orleans.Grain, IMyGrain
{
// ...
}
[OneInstancePerCluster]
public class MyLocalGrain : Orleans.Grain, IMyGrain
{
// ...
}
조직 클래스가 이러한 특성 중 하나를 지정하지 않으면 구성 매개 변수 GlobalConfiguration.UseGlobalSingleInstanceByDefault가 true
로 설정된 경우 기본값은 OneInstancePerClusterAttribute 또는 GlobalSingleInstanceAttribute가 됩니다.
글로벌 단일 인스턴스 조직에 대한 프로토콜
GSI(글로벌 단일 인스턴스) 조직에 액세스하고 활성화가 존재하지 않는 것으로 알려지면 새 인스턴스를 활성화하기 전에 특수 GSI 활성화 프로토콜이 실행됩니다. 특히 요청은 현재 다중 클러스터 구성의 다른 모든 클러스터로 전송되어 이미 이 조직에 대한 활성화가 있는지 확인합니다. 모든 응답이 부정이면 이 클러스터에 새 활성화가 만들어집니다. 그렇지 않은 경우 원격 활성화가 사용됩니다(또한 로컬 디렉터리에 참조가 캐시됨).
클러스터 조직당 하나의 인스턴스에 대한 프로토콜
클러스터당 1개 인스턴스 조직에 대한 클러스터 간 통신은 없습니다. 단순히 각 클러스터 내에서 독립적으로 표준 Orleans 메커니즘을 사용합니다. Orleans 프레임워크 자체 내에서 다음 조직 클래스는 OneInstancePerClusterAttribute로 표시됩니다.
ManagementGrain
SystemTargetBasedMembershipTable
GrainBasedReminderTable
의심스러운 활성화
GSI 프로토콜이 3번(또는 구성 매개 변수 GlobalSingleInstanceNumberRetries에 의해 지정된 숫자)의 다시 시도 후에도 모든 클러스터로부터 결정적인 응답을 수신하지 못하는 경우 일관성보다 가용성을 선호하여 낙관적으로 새 로컬 “의심스러운” 활성화를 만듭니다.
의심스러운 활성화는 중복될 수 있습니다(GSI 프로토콜 활성화 중에 응답하지 않은 일부 원격 클러스터는 그럼에도 불구하고 이 조직의 활성화를 가질 수 있기 때문). 따라서 주기적으로 30초마다(또는 구성 매개 변수 GlobalSingleInstanceRetryInterval에 지정된 간격) GSI 프로토콜은 의심스러운 모든 활성화에 대해 다시 실행됩니다. 이렇게 하면 클러스터 간의 통신이 복원되고 나면 중복 활성화를 검색하고 제거할 수 있습니다.
.NET