다음을 통해 공유


부하 분산

일반적으로 부하 분산은 런타임의 핵심 Orleans 요소 중 하나입니다. Orleans 런타임은 리소스 사용량을 최대화하고, 핫스팟을 방지하며, 성능을 향상시키고, 탄력성에 도움이 되는 균형을 유지하려고 합니다. 부하 분산은 Orleans 여러 위치에 적용됩니다. 다음은 런타임이 분산을 수행하는 위치의 완전하지 않은 목록입니다.

  1. 기본 액터 배치 전략은 무작위입니다. 새 활성화는 사일로에 무작위로 배치됩니다. 이렇게 하면 배치가 분산되고 대부분의 시나리오에서 핫스폿을 방지할 수 있습니다.
  2. 고급 ActivationCountBasedPlacement 전략은 모든 사일로의 활성화 횟수를 균등화하여 사일로 간에 더 균등하게 분산되도록 합니다. 이는 탄력성에 특히 중요합니다.
  3. 그레인 디렉터리 서비스는 본질적으로 균형 잡힌 구조인 분산 해시 테이블 위에 구축됩니다. 디렉터리 서비스는 곡물을 활성화로 매핑합니다. 각 사일로는 전역 매핑 테이블의 일부를 소유하며, 이 테이블은 가상 버킷과 일관된 해시를 사용하여 모든 사일로에서 균형 잡힌 방식으로 전역적으로 분할됩니다.
  4. 클라이언트는 모든 게이트웨이에 연결하고 균형 잡힌 방식으로 요청을 분산합니다.
  5. 미리 알림 서비스는 분할된 분산 런타임 서비스입니다. 일관된 해시를 통해 모든 사일로에 대해 어떤 미리 알림을 제공할 책임이 있는지 균형 있게 할당됩니다. 이는 곡물 디렉터리처럼 사일로 간에 균형을 이루도록 설계되어 있습니다.
  6. 사일로 내의 성능에 중요한 구성 요소는 분할되고 전체 작업은 로컬로 분산됩니다. 이를 통해 사일로 런타임은 사용 가능한 모든 CPU 코어를 완전히 활용하고 사일로 내 병목 현상을 방지할 수 있습니다. 이는 스레드, 소켓, 디스패치 책임, 큐 등에 대한 작업 할당과 같은 모든 로컬 리소스에 적용됩니다.
  7. 클러스터 QueueBalancerBase는 사일로 전체에 걸쳐 지속성 큐에서 이벤트를 끌어와야 하는 책임의 균형을 유지합니다.

균형이 반드시 지역성을 잃는 것을 의미하지는 않습니다. 좋은 지역성을 유지하면서 균형을 유지할 수 있습니다. 예를 들어, 균형 조정에 샤딩/파티셔닝이 포함되는 경우, 각 파티션 내에서 지역성을 유지하면서 특정 논리 작업에 대한 책임을 나눌 수 있습니다. 이는 로컬 및 분산 균형 모두에 적용됩니다.