2010-05-19 3 views
0

여러 작업자를 사용하여 절차 코드를 처리하고 전체로드를 처리 할 때 고유 한 이점이 있습니까? 내 워크 플로우는 다음과 같습니다 경우 즉Windows Azure 작업자 역할 : 하나의 큰 작업 또는 많은 작은 작업?

:

  1. 가져 오기 queue0에서 작업과 대기열 한 결과하기 queue1을
  2. 의에서
  3. 결과 저장을하고 B
  4. 할 queue2
  5. 에서 B에서
  6. 스토어 결과가 queue2 결과와 수행하기 C

각자가 전체 작업을 수행하는 3 명의 작업자와 각각의 작업을 수행하는 3 명의 작업자 (작업자 1은 1 & 2, 작업자 2는 3 & 4, 작업자 3은 5)을 사용하는 데 고유 한 이점이 있습니까?

우리는 (5 단계에서 끝냈다) 작업에만 관심이 있다면 같은 방식으로 (적어도 3 명의 작업자를 사용하면) 비례하는 것처럼 보일 것입니다. 설치가 많은 근로자가 병목 현상이 적기 때문에 큰 일이 더 좋은 것일 수 있습니까?

답변

1

일반적으로 작업이 작을수록 프로세스가 충돌 할 때 잃는 작업이 줄어 듭니다. 또한 작업이 적을수록 작업을 더 균등하게 배포 할 수 있습니다. (하나의 작업 인스턴스가 긴 작업을하고 다른 모든 작업 인스턴스가 유휴 상태 인 대신 모든 작업 인스턴스가 작은 작업을 수행하도록하는 대신) 작은 작업으로 작업을 분할하는 방법을 제외하고 설정합니다. 작품마다 여러 가지 작업자 역할이 있어야하는지, 각각 하나의 작업 만 수행 할 수 있는지 또는 모든 것을 할 수있는 단일 작업자 역할 (그러나 많은 인스턴스)이 필요한지 여부에 대한 질문이 있습니다. 나는 후자 (모든 것을 할 수 있고 모든 큐를 검사해야 할 필요가있는 것을 볼 수있는 코드)를 기본값으로 사용 하겠지만, 전자와 함께 할 이유가있다. 예를 들어 한 종류의 작업에 더 많은 RAM이 필요한 경우 해당 작업자에 대해 더 큰 VM 크기를 사용할 수 있습니다. 또 다른 예는 여러 종류의 작업을 독립적으로 확장하려는 경우입니다.

1

@smarx의 말씀에 추가 :

  • 는 "다목적"노동자의 모델은보다 일반적인 물론이다. 따라서 특수화 된 유형 (위에서 사용 된 추가 RAM 예제와 같은)이 필요한 경우에도 특정 역할에 하나의 태스크 만 있으면됩니다.

  • 추가 비용이 있습니다. 당신은 "업무 밀도"를 높이기위한 경제적 동기를 가질 것입니다 (업무/사례에서와 같이). M 유형의 작업이 있고 각 작업자를 다른 작업자에게 할당하는 경우 일부 작업은 한 번만 수행 할 수도 있지만 M 인스턴스에 대해 비용을 지불하게됩니다.

나는 얼마 전에 blogged about this 그것은 우리의 guide (장 "06 week3.docx")

많은 프레임 워크와 (우리 포함) 샘플이 방법을 사용 한 주제입니다.

관련 문제