Logo

第三章 下載路徑:並行下載、復原與重組(重點)

對於接收者來說,「更快」主要體現在兩個方面:並行取得多個區塊以提高吞吐量,以及能夠在弱網路或網路切換下無需重新啟動即可恢復。 從工程角度來看,下載路徑與上傳路徑是對稱的。

3.1 下載物件和清單

  • 在下載之前,客戶端應該取得清單以了解總區塊數、順序以及如何定位每個物件。
  • 清單必須唯一地定位每個區塊(透過物件鍵規則或等效索引)。

3.2 並行下載

  • 客戶端應該同時下載多個區塊以接近頻寬上限。
  • 客戶端應該使用有限的並發性,並在錯誤率上升時減少並發性。
  • 跨區域RTT較高時,同時發生的好處往往更大,因為單一連接更容易受到RTT和抖動的限制。

3.3 斷點續傳下載

  • 客戶端必須能夠記錄已完成的區塊集(例如,點陣圖/索引集)。
  • 中斷後,客戶端應該只取得遺失的區塊,而不是重新下載整個檔案。
  • 如果伺服器強制執行下載計數限制,則用戶端應該在​​復原期間最小化冗餘下載以避免浪費計數。

3.4 重新組裝

  • 客戶端必須按照 chunkIndex 順序重新組裝輸出檔案。
  • 客戶端應該使用串流寫入/漸進重組來減少記憶體峰值(特別是對於非常大的檔案)。
  • 如果打包多個文件,用戶端可以按文件輸出或使用容器格式(取決於產品設計)。

3.5 完整性檢查(簡短)

  • 下載後,客戶端應該驗證區塊(例如,雜湊/長度一致性)。
  • 如果驗證失敗,它必須失敗關閉並重試相應的區塊。
  • 有關加密/身份驗證失敗的邊界,請參閱安全性和隱私白皮書中的相關部分。