swarm不是一個存儲系統而是分配流量系統。我們先來看看ipfs系統。ipfs是一個存儲系統。當一個文件存儲在ipfs節點a上時,ipfs會將文件信息推送到整個網絡中的某個地方,然后當其他節點b需要數據時,就會從這個節點獲取該文件的文件信息。這個文件信息包含文件所在的節點,所以B知道文件在A這里,所以B嘗試連接A,從A讀取文件數據。
節點B在讀取文件數據的同時,也把這個文件(或者文件中的一個片段)的信息推送到整個網絡的某個地方。節點C讀取相應文件的時候,發現A和B都有這個來自全網的文件數據,然后嘗試連接這兩個節點(A和B)讀取文件數據。文件隨著讀取次數的增加在網絡傳播就會越多,讀取的速度就會很快的,但在初始階段速度很慢,甚至可能無法讀取(假設A和B都在內網),所以ipfs系統中有一個網絡滲透的概念了。
在swarm文件中按照4KB片段進行切割的金字塔結構。然后按照算法將每個片段連續推送到某個地方,所有中間節點緩存一個數據。當需要讀取文件時,首先從某個地方讀取文件的根目錄,然后從根目錄讀取不同的文件片段信息,根據不同地方讀取相應內容。
數據一旦提交到swarm網絡,就會被自動分段并推送到整個網絡的不同節點。在ipfs中如果沒有人讀取,這些數據就不會擴散。提高讀取數據性能的swarm,但數據會自動推送至不需要存儲數據的節點,浪費寶貴的存儲空間和帶寬,這在ipfs中是肯定可以避免的。自動擴散后的數據內容傳播到網絡不同節點來讀取,稱之為內容分發系統。有不懂的請咨詢夢飛云idc了解。