2010-07-02 6 views
2

고유 한 파일을 생성하는 시스템 세트를 생성해야하며이를 PRODUCERS라고 부르며 컴퓨터 세트는 CONSUMERS라고하는 이러한 파일을 수신해야합니다. PRODUCERS의 모든 컴퓨터는 하나 이상의 소비자에게 파일을 보낼 수 있습니다 (일부 해시 메커니즘을 기반으로). 필자는 보장 된 mannner에서 파일 전송이 이루어 지도록 보장하는 메커니즘을 구축해야합니다. 즉 제작자 또는 소비자가 충돌하거나 재부팅되어 중단 된 부분부터 계속할 수 있습니다. 이것을 구현할 수있는 어리석은 확장 가능한 방법이 있습니까? 모든 내결함성 시스템에서 공통적 인 필요가있는 것 같습니다. 생산자와 소비자의 수는 즉석에서 증가/감소 할 것으로 예상됩니다.비동기 분산 파일 전송

답변

0

당신이 묘사 한 것은 아마 어떤 형태의 메시지 전달을 사용하여 가장 쉽게 구현할 수 있습니다. http://www.zeromq.org을 살펴볼 수도 있습니다. 나는이 도서관과 함께 일해 왔으며 전심으로 그것을 추천 할 수있다.

사이드 노트 : C++을 사용할 필요가없는 경우 Erlang을 선택하는 것이 좋습니다.

1

설명하는 내용은 Google File System 아키텍처의 복제 메커니즘과 비슷합니다. 보내는

  1. 생산자 : 그것은 귀하의 케이스에 적용 당신은 그림의 그림 (단순화와) 2.

    요약과 함께 3.1 용지의 3.2에 가장 관심이있을거야 데이터, 응답을 기다립니다.

  2. 소비자 (s) 답장, "모든 데이터를 받았습니다."
  3. PRODUCER은 "finish write"명령을 보내고 응답을 기다립니다.
  4. 소비자 (s) 회신, "데이터를 디스크로 플러시했습니다."
  5. 지금은 데이터가 "저장 됨"으로 간주됩니다. 신문에 설명

GFS로 소비자에게 쓰기를 파이프 라이닝 대신 동시에 N 기계를 통해 하나의 시스템의 대역폭을 분할 포함 최적화의 숫자를 구현합니다.

충돌을 통한 안전 보장을 위해 Intent Log을 사용하여 멱등 원기 쓰기 작업을 수행 할 수 있습니다. 이것은 생산자가 끝날 때만 가능합니다 (예를 들어 시간 초과 후 재 시도) 또는 소비자 측에서도 가능합니다 (재부팅시 작업 계속).