2013-05-09 2 views
0

필자는 작은 블록으로 분리 된 작업 블록을 가지고 있습니다. 각 블록을 NumberCruncher 인스턴스에 할당하려고합니다. 각 인스턴스는 고유 한 EndPoint에서 호스팅되며 서버의 특정 스레드에서 실행됩니다. 지정된 EndPoint에서 NumberCruncher의 인스턴스는 txt 파일 형식으로 결과를 반환하기 전에 클라이언트 프록시가 전달한 숫자를 찾아서 처리합니다.WCF, 여러 서버의 동시 요청 처리하기

클라이언트 측에서는 2 개의 스레드 안전성 목록을 유지해야한다고 가정합니다. 1은 결과를 반환하기 위해 대기중인 NumberCruncher의 인스턴스에 연결된 EndPoint를 포함합니다. 더 많은 작업을 할당 받기를 기다리고있는 NumberCruncher 인스턴스의 경우 두 번째?

이 목록에 항목을 추가하는 것과 관련하여 서버에서 여러 요청을 처리하는 방법은 무엇입니까? 한 번에 하나씩 만 추가 할 수 있으므로 클라이언트가 "네가 목록에 성공적으로 추가되었으므로 이제 요청 추가를 중단하라"는 메시지를 서비스에 다시 전송해야한다고 가정합니다. 나는 현재 내가 수집 한 시계열에 대한 몇 가지 분석을 실행하기 위해 노력하고있어

편집 할 수 있습니다. 필자는 확인하고 (PC의 코어 수로 결정된) 다른 스레드에 할당 할 여러 매개 변수를 분할하는 프로그램 (Number Cruncher)을 작성했습니다. 각 스레드는 할당 된 입력으로 Number Cruncher를 실행합니다. 불행히도 이것은 모든 코어를 사용할 때조차도 내 PC에서 어리 석다. 그래서 나는이 같은 프로그램을 여러 대의 PC (서버)에서 실행하고 모든 서버에 작업을 할당하는 단일 프로그램을 작성하려고했습니다. 각 시뮬레이션은 약 1 시간이 소요됩니다. 그래서 나는 520 시간의 계산 시간을보고있다. (즉, 단일 PC에서는 불가능하다.)

답변

1

나는 당신이 이것을 생각하고 있다고 생각합니다.

WCF에서는 인스턴스 수 (단일, 세션 및 요청 당)와 인스턴스가 단일 또는 다중 스레드인지 여부를 제어 할 수 있습니다. 그러나 요청의 스레드 유사성 이상은 아닙니다.

당신이 필요하지는 않지만, 나는 당신이 요청 당 인스턴스를 구성해야한다고 생각합니다 (코딩과 상태 관리에 대한 세부 사항에 많이 의존합니다).

최대 용량과 수용 가능한 대기 시간을 달성하도록 서버를 조절할 수 있습니다. 할 필요가 없다면 스레드 관리를 망치지 마십시오.


편집

당신은 이것에 대한 WCF를 사용할 수 있지만 그것은 분산 컴퓨팅 문제, 전문 소프트웨어가 존재하는 후.

작업자 PC를 서버로 실행할 수 있습니다. 현재 방향이 될 것 같습니다. 하지만 것 : 요청할 수

  • 실행 '연체'항목을 확인하고
    • 요구에 작업을 분할하고, 작업 항목 를 관리 한 서버 그들에게
  • 실행 여러 클라이언트를 다시 발행 코어가있는만큼의 작업 항목을 위해
    • 은 최대 부하에 맞게 구성해야합니다.무엇 u는 위에서 말한 것은 아마 권리로 코어 + 2 또는 코어-1
필자는 내 질문에 편집
+0

N 일 수 있습니다. –

+0

왜 1 대의 서버와 여러 대의 클라이언트가 필요합니까? –

+0

결과가 훨씬 쉽게 반환되기 때문입니다. 또한 주 (主)는 노동자의 능력을 알거나 관리 할 필요가 없습니다. –