在 P2P 文件分享應用以文件或文件段為單位的優缺
- 2019 年 10 月 3 日
- 筆記
在我用了好幾個 P2P 文件分享應用之後,我對比了多個應用對資源的處理,可以看到基本上可以分為文件夾級的、文件級的和文件裡面的一段段級的。本文將會告訴大家使用不同方法的優點和可能的坑方便大家在開發時候選擇
存儲冗餘
用文件作為單位的,例如 UTorrent 工具,本身存儲的文件就是用戶下載的文件,除了用戶下載文件之外只需要 Torrent 文件作為文件資訊保存
而用文件段作為單位的,例如 IPFS 工具,將需要額外的空間存儲文件段,因為一個不同的文件可能存在相同的文件段。例如 git 管理,將會多了一份文件大小
而文件段作為單位的,依然可以使用原文件作為資源,此時需要額外記錄文件偏移量
索引
用文件作為單位的,可以直接指定文件 id 作為索引,從而拿到文件內容
用文件段作為單位的,從文件 id 拿到了文件包含的文件段,從文件包含的文件段裡面的索引拿到文件段內容
傳輸
使用文件作為單位的,需要使用下載鏈機制,這樣才能作為支援多個設備提供下載
使用文件段作為單位的,默認就支援讓一個文件從多個設備下載,因為一個文件包含多段,每一段都可以進行不影響的下載
校驗
整個文件進行校驗的速度會比較慢,而使用文件段作為校驗的,可以在每一段下載完成之後就進行每一段的校驗