Crawler.NET: Komponensalapú elosztott keretrendszer a web bejárására Hunyadi Levente és Pallos Péter 2006. november 17.
Crawler.NET
A component-based distributed framework for web traversal
Motiváció Bevezetés
az internet mérete rohamosan no˝
a web: szórt formában jelen lévo˝ információ
˝ ˝ keresorendszerek felértékelodése
indexadatbázisok építéséhez webet bejáró alkalmazások
Motiváció Célok Architektúra Keretrendszer Referenciamegvalósítás Értékelés
Crawler.NET
A component-based distributed framework for web traversal
Motiváció Bevezetés
Motiváció
⇓
Célok Architektúra
Értékelés
hatékony bejárás
⇓
Keretrendszer Referenciamegvalósítás
friss indexadatbázis
párhuzamosítás
⇓
elosztott rendszer
⇓
lényegesen nagyobb komplexitás
Crawler.NET
A component-based distributed framework for web traversal
Tervezési célok Bevezetés
skálázhatóság
könnyu˝ konfigurálhatóság
átlátszó kommunikáció
robusztusság, hibaturés ˝
Motiváció Célok Architektúra Keretrendszer Referenciamegvalósítás Értékelés
Crawler.NET
A component-based distributed framework for web traversal
A rendszer architektúrája Bevezetés
A célok megvalósítását két elkülönülo˝ réteg biztosítja.
Motiváció Célok Architektúra
Keretrendszer Általános feladatok
Ráépülo˝ alkalmazás Konkrét feladatok
Keretrendszer Referenciamegvalósítás Értékelés
kommunikáció
életciklus-kezelés
konfigurálás
dokumentumok letöltése
hivatkozások kinyerése
köztük lévo˝ kapcsolatok nyilvántartása
Crawler.NET
A component-based distributed framework for web traversal
Az architektúra tulajdonságai Bevezetés
a keretrendszer szabványos elemeket tartalmaz, amelyek megvalósítják az általános viselkedést
a feladat-specifikus elemeket származtatással képezzük
az elemek között a keretrendszer laza csatolást biztosít
Motiváció Célok Architektúra Keretrendszer Referenciamegvalósítás Értékelés
˝ Elonyök: +
egyszerubb ˝ és gyorsabb fejlesztés
+
˝ ˝ új funkcionalitással való bovíthet oség
Crawler.NET
A component-based distributed framework for web traversal
Rendszerelem-típusok Bevezetés
Komponensek a rendszer muveletvégz ˝ o˝ egységei, egy osztályt és hozzá kapcsolódó egy vagy több szálat jelentenek
˝ Illesztok aszinkron, üzenetalapú kommunikációt tesznek ˝ komponensek között a folyamaton belül lehetové vagy két távoli folyamat között
Szolgáltatók ˝ az eroforrásokhoz történo˝ szinkronizált hozzáférést szabályozzák
Keretrendszer Rendszerelemek ˝ Illesztok Komponensek Szolgáltatók Referenciamegvalósítás Értékelés
Crawler.NET
A component-based distributed framework for web traversal
˝ Illesztok Bevezetés
típusos sorok absztrakciói, üzenetsort reprezentálnak
˝ bemeneti és kimeneti illesztok
Keretrendszer Rendszerelemek ˝ Illesztok Komponensek Szolgáltatók Referenciamegvalósítás Értékelés
bemeneti illeszto˝ −→ fogyasztó komponens
termelo˝ komponens −→ kimeneti illeszto˝
˝ több-több kapcsolat a komponensek és az illesztok között; azonosítás szerepek segítségével
Crawler.NET
A component-based distributed framework for web traversal
˝ megvalósítása Illesztok Bevezetés
˝ típusa: A komponensek számára átlátszó az illesztok
Keretrendszer Rendszerelemek
Helyi illeszto˝ típusos FIFO sor; az adatáramlás referencia szerinti átadással
Távoli illeszto˝ két külön folyamatban lévo˝ sornak és az azokat összekapcsoló hálózati kommunikációs komponenseknek felel meg; az adatáramlás sorosítással (TCP protokollon keresztül)
˝ Illesztok Komponensek Szolgáltatók Referenciamegvalósítás Értékelés
Crawler.NET
A component-based distributed framework for web traversal
Komponensek Bevezetés
˝ A sorok kezelését a komponensek ososztálya takarja el.
Keretrendszer Rendszerelemek
GenericComponent
˝ Illesztok Komponensek Szolgáltatók Referenciamegvalósítás
GenericProducer
GenericConsumer
SimpleFilter
ComplexFilter
Értékelés
SynchronousOutputFilter
SynchronousCompexFilter
AsynchronousComplexFilter
SemiSynchronousComplexFilter
Crawler.NET
A component-based distributed framework for web traversal
Szolgáltatók Bevezetés
˝ komponensek által közösen használt eroforrásokhoz való hozzáférés becsomagolása
szinkronizált hozzáférés az adatforrásokhoz
többszintu˝ gyorsítótárazási mechanizmus átlátszó beépítése
Keretrendszer Rendszerelemek ˝ Illesztok Komponensek Szolgáltatók Referenciamegvalósítás Értékelés
Crawler.NET
A component-based distributed framework for web traversal
Felépítés Bevezetés
Kliens–szerver architektúra:
Keretrendszer Referenciamegvalósítás
a szerver particionálja a webet és az egyes részleteinek bejárását egy-egy kliensnek utalja ki
a kliens bejárja a web rábízott szeletét, a kifelé mutató hivatkozásokat visszaküldi a szervernek
Felépítés Vezénylés Kliens szerkezete Bejárás Terheléselosztás Dokumentumelemzés
Megvalósítás a keretrendszer alaposztályainak segítségével
URL elosztó komponens Értékelés
Crawler.NET
A component-based distributed framework for web traversal
Vezénylo˝ szerver komponens Bevezetés
a beérkezo˝ URL-eket tartomány, illetve hoszt alapján ˝ kliensek felé továbbítja a felelos
˝ kliens, kijelöl egyet amennyiben nincs felelos
tárolja a nemrég továbbított URL-eket, kiszurve ˝ a ˝ gyakori ismétlodéseket
Keretrendszer Referenciamegvalósítás Felépítés Vezénylés Kliens szerkezete Bejárás Terheléselosztás Dokumentumelemzés URL elosztó komponens Értékelés
Crawler.NET
A component-based distributed framework for web traversal
Vezénylo˝ szerver komponens Bevezetés
A vezénylés során a kicserélt adatmennyiség korlátozott:
Keretrendszer Referenciamegvalósítás
lokalitási elv : a hivatkozások kb. 10%-a mutat csak hoszton kívülre
kötegelt átvitel: az ismeretlen hoszthoz tartozó URL-eket a kliens csoportosan küldi át a szervernek
nemrég látott URL-ek automatikus eldobása
Felépítés Vezénylés Kliens szerkezete Bejárás Terheléselosztás Dokumentumelemzés URL elosztó komponens
˝ Terheléselosztás vezénylopéldányok között: URL-ek szétosztása az URL hoszt név hash értéke alapján
Értékelés
Crawler.NET
A component-based distributed framework for web traversal
Egy kliens alapkiépítése Bevezetés
Server
Keretrendszer
url belonging to Client 1
Referenciamegvalósítás Felépítés Vezénylés Kliens szerkezete
local url queue external url
internal url
URL distributor
Client 1
next url
host, #new items
Traversal component
Bejárás Terheléselosztás Dokumentumelemzés URL elosztó komponens
base url, links Parser
url, length, start/stop time, HTTP status code url, HTTP header, document content
document url, referrer url
Downloader
finished
Értékelés
Crawler.NET
A component-based distributed framework for web traversal
Bejáró komponens Bevezetés
Server
Keretrendszer
url belonging to Client 1
Referenciamegvalósítás Felépítés Vezénylés Kliens szerkezete
local url queue external url
internal url
URL distributor
Client 1
next url
host, #new items
Traversal component
Bejárás Terheléselosztás Dokumentumelemzés URL elosztó komponens
base url, links Parser
url, length, start/stop time, HTTP status code url, HTTP header, document content
document url, referrer url
Downloader
finished
Értékelés
Crawler.NET
A component-based distributed framework for web traversal
Bejáró komponens Bevezetés
letöltésre váró URL-ek tárolása perzisztens tár ban
˝ vagy egy kiszolgáló értesítés új URL-ek érkezésérol felszabadulásáról
szélességi vagy relevancia alapú bejárás alapján a következo˝ dokumentum kiválasztása
Keretrendszer Referenciamegvalósítás Felépítés Vezénylés Kliens szerkezete Bejárás Terheléselosztás Dokumentumelemzés
Url distributor
host, #new items
url, referrer url
URL elosztó komponens Értékelés
Traversal component
url queue
Downloader
finished
Crawler.NET
A component-based distributed framework for web traversal
Terheléselosztó komponens Bevezetés
megakadályozza a webkiszolgálók túlterhelését
szoros együttmuködés ˝ a bejáró komponenssel
kézzel konfigurálható a kérések gyakorisága globálisan és hosztonként is
˝ dinamikusan változtatható a kérések idoköze a visszajelzésként kapott válaszido˝ és sebesség alapján
Keretrendszer Referenciamegvalósítás Felépítés Vezénylés Kliens szerkezete Bejárás Terheléselosztás Dokumentumelemzés URL elosztó komponens Értékelés
Crawler.NET
A component-based distributed framework for web traversal
Terheléselosztó komponens Bevezetés
Load balancer
Keretrendszer Referenciamegvalósítás
available host Url distributor
host, #new items
Traversal component
Felépítés
url, referrer url
Vezénylés Kliens szerkezete Bejárás
url queue
Downloader
statistics
Terheléselosztás Dokumentumelemzés URL elosztó komponens Értékelés
Crawler.NET
A component-based distributed framework for web traversal
Dokumentumelemzo˝ komponens Bevezetés
Server
Keretrendszer
url belonging to Client 1 Referenciamegvalósítás Felépítés Vezénylés Kliens szerkezete
local url queue external url
internal url
URL distributor
Client 1
next url
host, #new items
Traversal component
Bejárás Terheléselosztás Dokumentumelemzés URL elosztó komponens
base url, links
Parser
url, length, start/stop time, HTTP status code url, HTTP header, document content
document url, referrer url
Downloader
finished
Értékelés
Crawler.NET
A component-based distributed framework for web traversal
Dokumentumelemzo˝ komponens Bevezetés Keretrendszer Referenciamegvalósítás
˝ Elsodleges feladata: hivatkozások kinyerése a dokumentumokból.
nem szabványos HTML állományok
hivatkozások sok különféle formában
teljesítménybeli megfontolások (pl. szkriptek értelmezése)
sokféle dokumentumtípus és -kódolás kezelése
Felépítés Vezénylés Kliens szerkezete Bejárás Terheléselosztás Dokumentumelemzés URL elosztó komponens
˝ (saját fejlesztés vagy egyedi elemzok open-source) vagy
˝ segítségével IFilter szur ˝ ok
Értékelés
Crawler.NET
A component-based distributed framework for web traversal
URL elosztó komponens Bevezetés
Server
Keretrendszer
url belonging to Client 1
Referenciamegvalósítás Felépítés Vezénylés Kliens szerkezete
local url queue external url
internal url
URL distributor
Client 1
next url
host, #new items
Traversal component
Bejárás Terheléselosztás Dokumentumelemzés URL elosztó komponens
base url, links Parser
url, length, start/stop time, HTTP status code url, HTTP header, document content
document url, referrer url
Downloader
finished
Értékelés
Crawler.NET
A component-based distributed framework for web traversal
URL elosztó komponens Bevezetés
konfigurációs állományban megadhatók a letöltendo˝ és kihagyandó URL-minták
robotokra vonatkozó korlátozások (robots.txt, <meta> címkék, rel attribútum)
˝ keresocsapdák észlelése és elhárítása:
Keretrendszer Referenciamegvalósítás Felépítés Vezénylés Kliens szerkezete Bejárás
URL tartomány kézi tiltása menet közben
Terheléselosztás Dokumentumelemzés
szurés ˝ relevancia alapján
URL elosztó komponens
mennyiségi korlátozás
Értékelés
Crawler.NET
A component-based distributed framework for web traversal
˝ Továbbfejlesztési lehetoségek Bevezetés
˝ konfiguráció és folyamatvezérlés grafikus felületrol
dinamikus, futási ideju˝ átkonfigurálhatóság
nagyméretu˝ adathalmazok tárolása általános célú adatbázisok helyett struktúrált állományokban
szimuláció és mérés nagyméretu˝ dokumentumhalmazokon
Keretrendszer Referenciamegvalósítás Értékelés Továbbfejlesztési ˝ lehetoségek Összefoglalás
Crawler.NET
A component-based distributed framework for web traversal
Összefoglalás Bevezetés
keretrendszer az általános feladatokra
laza csatolású, feladatspecifikus komponensek
˝ skálázható architektúra nyitott, kiterjesztheto,
átlátszó gyorsítótárazási mechanizmusok támogatása
deklaratív konfigurálhatóság, testreszabhatóság
Keretrendszer Referenciamegvalósítás Értékelés Továbbfejlesztési ˝ lehetoségek Összefoglalás
A megvalósított rendszer forráskódja elérheto˝ a SourceForge.net-en.
http://sour eforge.net/proje ts/web rawler
Crawler.NET
A component-based distributed framework for web traversal
Bevezetés Keretrendszer Referenciamegvalósítás Értékelés Továbbfejlesztési ˝ lehetoségek Összefoglalás
Köszönjük a figyelmet!
Crawler.NET
A component-based distributed framework for web traversal