다음을 통해 공유


조직 조정 특성

개발자는 클러스터가 특정 조직 클래스와 관련하여 조직 디렉터리를 언제 어떻게 조정해야 하는지 나타낼 수 있습니다. GlobalSingleInstanceAttribute는 단일 글로벌 클러스터에서 Orleans를 실행할 때와 동일한 동작을 원한다는 것을 뜻합니다. 즉, 모든 호출을 조직의 단일 활성화로 라우팅합니다. 반대로 [OneInstancePerCluster] 특성은 각 클러스터가 독립적인 활성화를 가질 수 있음을 나타냅니다. 이는 클러스터 간 통신을 원치 않는 경우에 적합합니다.

특성은 조직 구현에 배치됩니다. 예시:

using Orleans.MultiCluster;

[GlobalSingleInstance]
public class MyGlobalGrain : Orleans.Grain, IMyGrain
{
   // ...
}

[OneInstancePerCluster]
public class MyLocalGrain : Orleans.Grain, IMyGrain
{
   // ...
}

조직 클래스가 이러한 특성 중 하나를 지정하지 않으면 구성 매개 변수 GlobalConfiguration.UseGlobalSingleInstanceByDefaulttrue로 설정된 경우 기본값은 OneInstancePerClusterAttribute 또는 GlobalSingleInstanceAttribute가 됩니다.

글로벌 단일 인스턴스 조직에 대한 프로토콜

GSI(글로벌 단일 인스턴스) 조직에 액세스하고 활성화가 존재하지 않는 것으로 알려지면 새 인스턴스를 활성화하기 전에 특수 GSI 활성화 프로토콜이 실행됩니다. 특히 요청은 현재 다중 클러스터 구성의 다른 모든 클러스터로 전송되어 이미 이 조직에 대한 활성화가 있는지 확인합니다. 모든 응답이 부정이면 이 클러스터에 새 활성화가 만들어집니다. 그렇지 않은 경우 원격 활성화가 사용됩니다(또한 로컬 디렉터리에 참조가 캐시됨).

클러스터 조직당 하나의 인스턴스에 대한 프로토콜

클러스터당 1개 인스턴스 조직에 대한 클러스터 간 통신은 없습니다. 단순히 각 클러스터 내에서 독립적으로 표준 Orleans 메커니즘을 사용합니다. Orleans 프레임워크 자체 내에서 다음 조직 클래스는 OneInstancePerClusterAttribute로 표시됩니다.

  • ManagementGrain
  • SystemTargetBasedMembershipTable
  • GrainBasedReminderTable

의심스러운 활성화

GSI 프로토콜이 3번(또는 구성 매개 변수 GlobalSingleInstanceNumberRetries에 의해 지정된 숫자)의 다시 시도 후에도 모든 클러스터로부터 결정적인 응답을 수신하지 못하는 경우 일관성보다 가용성을 선호하여 낙관적으로 새 로컬 “의심스러운” 활성화를 만듭니다.

의심스러운 활성화는 중복될 수 있습니다(GSI 프로토콜 활성화 중에 응답하지 않은 일부 원격 클러스터는 그럼에도 불구하고 이 조직의 활성화를 가질 수 있기 때문). 따라서 주기적으로 30초마다(또는 구성 매개 변수 GlobalSingleInstanceRetryInterval에 지정된 간격) GSI 프로토콜은 의심스러운 모든 활성화에 대해 다시 실행됩니다. 이렇게 하면 클러스터 간의 통신이 복원되고 나면 중복 활성화를 검색하고 제거할 수 있습니다.