3장 다운로드 경로: 병렬 다운로드, 복구 및 재조립(키)
수신자의 경우 "빠름"은 주로 두 가지 방식으로 나타납니다. 처리량을 향상하기 위해 여러 청크를 병렬로 가져오는 것과 약한 네트워크 또는 다시 시작하지 않고도 네트워크 전환에서 복구할 수 있는 것입니다. 엔지니어링 관점에서 다운로드 경로는 업로드 경로와 대칭입니다.
3.1 객체 및 매니페스트 다운로드
- 다운로드하기 전에 클라이언트는 매니페스트를 가져와 총 청크 수, 순서 및 각 개체를 찾는 방법을 알아내야 합니다.
- 매니페스트는 각 청크를 고유하게 찾아야 합니다(객체 키 규칙 또는 동등한 인덱스를 통해).
3.2 병렬 다운로드
- 클라이언트는 대역폭 한도에 가까워지도록 여러 청크를 동시에 다운로드해야 합니다.
- 클라이언트는 제한된 동시성을 사용해야 하며 오류율이 높아지면 동시성을 줄여야 합니다.
- 동시성의 이점은 지역 간 RTT가 높을수록 더 커지는 경우가 많습니다. 단일 연결이 RTT 및 지터에 의해 더 쉽게 제한되기 때문입니다.
3.3 재개 가능한 다운로드
- 클라이언트는 완료된 청크 세트(예: 비트맵/인덱스 세트)를 기록할 수 있어야 합니다.
- 중단 후 클라이언트는 누락된 청크만 가져와야 하며 전체 파일을 다시 다운로드해서는 안 됩니다.
- 서버가 다운로드 횟수 제한을 적용하는 경우 클라이언트는 횟수 낭비를 방지하기 위해 복구 중에 중복 다운로드를 최소화해야 합니다.
3.4 재조립
- 클라이언트는 ChunkIndex 순서로 출력 파일을 재조립해야 합니다.
- 클라이언트는 스트리밍 쓰기/점진적 재조립을 사용하여 메모리 피크를 줄여야 합니다(특히 매우 큰 파일의 경우).
- 여러 파일이 패키지된 경우 클라이언트는 파일별로 출력하거나 컨테이너 형식을 사용할 수 있습니다(제품 디자인에 따라 다름).
3.5 무결성 검사(간단)
- 다운로드 후 클라이언트는 청크(예: 해시/길이 일관성)를 확인해야 합니다.
- 검증에 실패하면 반드시 실패 처리하고 해당 청크를 다시 시도해야 합니다.
- 암호화/인증 실패에 대한 경계는 보안 및 개인 정보 보호 백서의 관련 섹션을 참조하세요.