Použili jsme 3 algoritmy pro výběr mezi parent počítači v případě záporných odpovědí na ICP dotazy nebo pokud žádné sibling počítače nejsou definovány.
Tato metoda je vytvořena pro případ, kdy některé z parent počítačů jsou i siblingové. Předpokládáme-li, že rychlost odpovědi na ICP dotaz souvisí s kvalitou spojení a zatížením cache na sibling počítači, je rozumné očekávat, že od počítače, který nám první odpoví na ICP dotaz získáme dokument nejrychleji.
Algoritmus pracuje takto:
Parent počítače seřadí do seznamu následujícím způsobem:
Metoda je určena pro rozložení zátěže mezi více ICP serverů v daném uzlu. Administrátor nadefinuje seznam parent počítačů a vzor (pattern), podle kterého jsou počítače vybírány. Pattern je pole pořadových čísel parent počítačů v seznamu. Tento pattern je udržován v globální struktuře spolu s ukazatelem na aktuální prvek.
Algoritmus pracuje následovně:
Vybere z patternu číslo v aktuální prvku ( toto číslo je pořadovým číslem počítače v seznamu parent počítačů) a posune aktuální prvek na další prvek patternu, popřípadě na začátek.
Př.:
icp_parent: cache.cesnet.cz 3130 3128
icp_parent: linux.kolej.mff.cuni.cz 3130 3128
icp_parent: cache.vol.cz 3153 3182
icp_pattern: 1,2,3,1,3,2,1,1
ukazatel na aktuální prvek je nastaven na prvek č. 4 tj. pořadové číslo parent počítače, od které budeme získávat dokument je 1.
Dokument tedy budeme požadovat od cache.cesnet.cz a ukazatel na aktuální prvek posuneme na prvek č. 5 tj. pořadové číslo parent počítače pro další požadavek v tomto uzlu ICP sítě bude 3 ( cache.vol.cz)
Pokusí se získat dokument od parent počítače s tímto pořadovým číslem
Pokud neuspěje, zkouší ostatní počítače v pořadí daném seznamem parent počítačů ( pokud narazí na konec seznamu přesune se na začátek a skončí až narazíme na počítač u kterého začal.)
Algoritmus používá pro určení parent počítače kód, pod kterým modul storage ukládá dokumenty na disk (viz. Storage).
Nejprve zjistíme počet parent počítačů v daném uzlu. Označme toto číslo jako n. Zjistíme také počet dosažitelných parent počítačů a označíme ho x. Následně vypočítáme zbytek po dělení prvního bytu kódu dokumentu a čísla n. Toto číslo nám pak určuje kolikátý parent počítač použijeme pro získání dokumentu. Je-li tento počítač nedosažitelný, zjistíme zbytek po dělení druhého bytu kódu dokumentu a čísla x. Toto číslo určuje z kolikátého dosažitelného počítače získáme daný dokument. Pokud od tohoto počítače dokument nezískáme, zkoušíme ostatní parent počítače v pořadí daném jejich pozicí v konfiguračním souboru.
Vzhledem k charakteru funkce přidělující kód dokumentu (viz. Storage) máme zaručeno přibližně stejnoměrné rozložení náhodných požadavků na dokumenty mezi parent počítače.
Hlavní rozdíl mezi algoritmem HASH a WEIGHTED spočívá v tom, že algoritmus HASH přesměruje všechny požadavky na určitý dokument vždy na stejný počítač, kdežto algoritmus WEIGHTED nikoliv. U algoritmu WEIGHTED ale máme zajištěno rozložení požadavku podle patternu (tedy muže být i rovnoměrné) i pro malý počet dotazů.