Squid 工作的原理(轉)

post0發表於2007-08-10
Squid 工作的原理(轉)[@more@]

  每一部 Squid 代理伺服器上有若顆硬碟,每顆硬碟又分割成多個 patition,每一個 partition 又可建立很多目錄(例如:二階層 64x64 個目錄),目錄下才放檔案( Squid 把它叫 object)。

1. Hash Table 和 Digest Table

  Squid 的工作太忙了,如果每一個使用者端想要的資料,都經過硬碟的檔案配置表去拿,速度較慢;所以 Squid 啟動之後,會在 RAM 建立一個 Hash Table,記錄硬碟中 object 配置的情形。Squid 又在 RAM 中建立一個 Digest Table (摘要表) ,其功能是和其他有合作關的 Squid (Sibling)互相交換 Digest Table,萬一使用者端想要的資料自己沒有時,可以很快的知道哪一部 Squid Server 有資料(Squid 也可以透過 ICP 向其他 Squid 查詢,但速度較慢)。但是 Digest Table 本身不小,既記憶體又頻寬,如果 Server 的記憶體不夠,對外頻寬不夠,反而比 ICP 查詢更慢。

2.Child、Parent 和 Sibling

  Squid Server 之間的第一種關是:Child 和 Parent。當 Child Squid Server 沒有資料時,會直接向 Parent Squid Server 要資料,然後一直等,直到 Parent 給它資料為止。

  Squid Server 之間的第二種關是:Sibling 和 Sibling。當 Squid Server 沒有資料時,會先向 Sibling 的 Squid Server 要資料,如果 Sibling 沒資料,就跳過它直接向 Parent 要或上 internet 去拿。

  一般 Squid Server 運作的模式是:

1. 當 Squid Server 沒有資料時,會先向 Sibling 的 Squid Server 要資料,如果 Sibling 沒資料,就跳過它直接向 Parent 要。

2. 向 Parent 要資料,然後一直等,直到 Parent 給它資料為止(Parent 自己有的資料或上 internet 去拿)。

3. 沒有 Parent 時,就自己上 internet 去拿。

4. 如果這三者都拿不到資料,才向使用者端回報拿不到資料。

  一般而言,把網路上一層的 Squid Server 設成 Sibling 是不錯的選擇(例如:學校將市網和中山大學設成 Sibling),因為網路上一層的 Squid Server 服務物件較多,其硬體較強,離我們比較近,速度也比較快;萬一要不到資料,我們還可以自己上 internet 去拿。那什麼時候設 Parent?當您的出口只有一個,或上一層 Squid Server 拿不到資料,自己也一定拿不到,只好將上一層 Squid Server 設為 Parent。 學校也可以將市網設為 Parent,因為學校對外的頻寬只有 384K(ADSL 上傳),而且市網拿不到的資料,大概學校也拿不到了。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-940734/,如需轉載,請註明出處,否則將追究法律責任。

相關文章