부하 분산
넓은 의미에서 부하 분산은 Orleans 런타임의 핵심 요소 중 하나입니다. Orleans 런타임은 분산을 통해 리소스 사용을 극대화하고 핫스폿을 방지할 수 있으므로 모든 것이 균형을 이루도록 노력하며, 이는 성능과 탄력성 향상에 도움이 됩니다. Orleans의 부하 분산은 여러 위치에 적용됩니다. 다음은 런타임이 분산을 수행하는 위치의 일부 목록입니다.
- 기본 행위자 배치 전략은 임의이며 새 활성화는 사일로에 임의로 배치됩니다. 이로 인해 배치가 분산되고 대부분의 시나리오에서 핫스폿을 방지할 수 있습니다.
- 더 고급 ActivationCountBasedPlacement에서는 모든 사일로의 활성화 횟수를 균등화하고자 하므로 사일로 간에 활성화가 더욱 고르게 분산됩니다. 이는 탄력성에 특히 중요합니다.
- 조직 디렉터리 서비스는 본질적으로 분산되어 있는 분산 해시 테이블을 기반으로 빌드됩니다. 디렉터리 서비스는 활성화에 조직을 매핑하고, 각 사일로는 전역 매핑 테이블의 일부를 소유하며, 이 테이블은 모든 사일로에서 분산된 방식으로 전역적으로 분할됩니다. 이를 위해 가상 버킷과 일관된 해시를 사용합니다.
- 클라이언트는 모든 게이트웨이에 연결하여 균형 잡힌 방식으로 요청을 여러 게이트웨이에 분산시킵니다.
- 미리 알림 서비스는 분산 분할된 런타임 서비스입니다. 어떤 사일로가 조직 디렉터리에서와 같이 일관된 해싱을 통해 모든 사일로에서 균형을 유지하는 알림을 제공할 책임이 있는지 할당합니다.
- 사일로 내 성능 심각 구성 요소가 분할되고 해당 구성 요소의 작업이 로컬로 분산됩니다. 이렇게 하면 사일로 런타임이 사용 가능한 모든 CPU 코어를 완전히 활용하며, 사일로 내 병목 현상을 만들 수 없습니다. 이는 스레드에 대한 작업 할당, 소켓, 디스패치 책임, 큐 등 모든 로컬 리소스에 적용됩니다.
- QueueBalancerBase는 지속성 큐에서 이벤트를 끌어와야 하는 책임을 클러스터의 사일로 전반에 분산합니다.
분산이 반드시 지역 손실을 의미하지는 않습니다. 균형을 유지하면서도 좋은 지역성을 유지할 수 있습니다. 예를 들어 분산이 분할(sharding)/분할(partitioning)을 의미하는 경우 각 파티션 내에서 지역성을 유지하면서 특정 논리 작업에 대한 책임을 분할할 수 있습니다. 이는 로컬 및 분산된 균형 유지에 모두 적용됩니다.
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET