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