2009-11-16 3 views
2

주십시오 결과 부분적으로 처리 될 다음 배치가

우리는 다음과 같은 상황이 :

부품 X 독립적 인 처리 컴포넌트 Y 각 부분을 보내는 부분으로 요청 파일 분할 구성 요소 Z에 대한 결과로 응답하는 네트워크를 통해 구성 요소 Z는 파일 부분의 모든 결과를 일괄 결과 파일으로 수집합니다.

참고 : - 요청 파일 : 파일에는 처리해야하는 N 개의 데이터 레코드가 들어 있습니다.

이 상황에 가장 적합한 방법은 무엇입니까? 그것에 대한 프로토콜이 있습니까?, 도울 수있는 라이브러리가 있습니까? 디자인 패턴 ??

thanx.

답변

1

매우 큰 파일을 처리하기 위해 작업 단위를 대기열에 넣기 위해 command pattern을 사용합니다.

명령 자체는 데이터베이스에 저장됩니다 (명령 입력 항목은 "프로세스 파일 X, 줄 1-100", "프로세스 파일 X, 줄 101-200"등). 서버 팜의 서버 수에 관계없이 하나의 명령을 선택하여 처리중인 명령을 표시하고 그 결과를 다시 쓸 수 있습니다. 컨트롤러는 버려진 작업 (수거되었지만 X 분 내에 작성된 결과 없음)을 찾고 작업을 재설정하여 다시 수령 할 수 있습니다.

+0

각 서버는 파일의 일부인 데이터 내용을 어떻게 가져 옵니까? 서버간에 공유되는 파일입니까? – Moro

+0

현재 구현은 파일의 라인을 임시 테이블로 읽습니다. 그러나 구현을 다시 할 시간이 있다면 아마도 공유 위치를 사용할 것입니다. Amazon AWS에서 실행되므로 공유 위치는 아마 S3입니다. –

1

RabbitMQ과 같은 메시지 서비스 대기열/버스가 도움이 될 수 있습니다. 이 서비스를 사용하면 모든 분산 구성 요소를 함께 연결할 수 있습니다. & 신뢰할 수있는 방식으로 결과를 전달/수집합니다.

서비스 버스가 모든 "문제"를 해결하지는 않지만 분산 된 & 안정적인 통신 비트를 해결할 수 있습니다.

+0

결과가 동일한 요청 대기열에 푸시됩니까? – Moro

+0

@Moro : 당신은 큐를 미세하게 제어 할 수 있습니다. – jldupont

관련 문제