Obsah | Dal¹à | Pøedchozà |
Vyhledávacà server je klÃèovou komponentou systému Agent. Obsahuje toti¾ vlastnà databázové jádro vèetnì indexovacÃho subsystému a ovladaèe filtrù. Pokud budete chtÃt pou¾Ãvat systém Agent na nÃzké úrovni, je vyhledávacà server spolu se svými subkomponentami to jediné co potøebujete.
V úvodu této èásti probereme nejprve architekturu vyhledávacÃho serveru. Kapitola Databázový stroj (5.2.1) obsahuje podrobný popis implementace databázového jádra systému Agent. Kapitola Rozhranà databázového stroje (5.2.2) popisuje rozhranà (API) databázového jádra Agent. Kapitola 5.2.3 se zabývá vstupnÃmi filtry a v kapitole 5.2.4 se dovÃte podrobnosti o rozhranà sûového serveru.
Architektura sûového serveru
Na obrázku 5.2-1 vidÃte schéma architektury vyhledávacÃho serveru. Popùeme si jej postupnì zleva doprava. Nejni¾¹à vrstvou vyhledávacÃho serveru je databázový stroj. Ten ji¾ pøistupuje pøÃmo k souborovému systému hostitelského operaènÃho systému a ukládá zde metainformace extrahované z indexovaných dokumentù. Databázový stroj v¹ak nenà pøÃstupný pøÃmo, nýbr¾ pøes vrstvu poskytujÃcà objektové rozhranà k databázovému jádru. Toto rozhranà je vyu¾Ãváno výkonnými objekty vyhledávacÃho serveru pro práci s databázovým strojem.
Obrázek 5.2-1 - architektura vyhledávacÃho serveru
Ve spodnà èásti schématu vidÃme dal¹à subsystémy vyhledávacÃho serveru. Jedná se o filtrovacà subsystém pou¾Ãvaný pro filtrovánà indexovaných dokumentù a dotazù. Dále je to slu¾ba stahovánà souborù, která pøevede daný lokálnà soubor nebo soubor dostupný protokolem HTTP na datový proud (stream), který je dále pøedán na zpracovánà filtrùm. Skupina "Dal¹à su¾by" zahrnuje ostatnà pomocné objekty serveru, jako napøÃklad notifikaènà slu¾bu (MessageBus) nebo kontroler ¾ivotnÃho cyklu globálnÃch objektù a slu¾eb (SystemManager).
Prostøednà èást schématu s ¹edým pozadÃm je vlastnà jádro vyhledávacÃho serveru. To je tvoøeno thread poolem obsahujÃcÃm výkonné objekty. Tyto objekty ètou data ze vstupnà fronty zpracovávajà je s vyu¾itÃm ostatnÃch subsystémù vyhledávacÃho serveru a vracejà výsledky do výstupnà fronty. Právì vstupnà a výstupnà fronta tvoøà rozhranà jádra systému ke komunikaènà vrstvì (subsystému) vyhledávacÃho serveru.
Komunikaènà vrstvu vyhledávacÃho severu tvoøà objekt SocketFactory (F), sada objektù zapisujÃcÃch a ètoucÃch data ze sûových spojenà (ServerSocket) (S1..Sn) a objekt ResultPublisher (P) starajÃcà se o doruèovánà výsledkù klientùm. SocketFactory naslouchá na stanovaném portu a èeká na pøipojenà klienta. Kdy¾ tato událost nastane, vytvoøà nový objekt tøÃdy ServerSocket a spustà jej s pøÃslu¹nými parametry. SocketFactory rovnì¾ zodpovÃdá za ¾ivotnà cyklus takto vytvoøených objektù, tak¾e uklÃzà uzavøená spojenà z pamìti a v pøÃpadì ukonèenà bìhu serveru je explicitnì uzavÃrá.
V¹echny objekty, oznaèené na schématu ¹ir¹Ãm okrajem jsou takzvané aktivnà objekty, tedy objekty obsahujÃcà vlastnà vlákno výpoètu. U výkonných objektù je tato skuteènost samozøejmostÃ. U sûových spojenà je tomu tak proto, ¾e sûový subsystém pou¾Ãvá pro ètenà z proudu dat blokujÃcà volánÃ, které zastavà výpoèet volajÃcÃho do doby, ne¾ je mo¾né pøeèÃst data. Aby mohl systém plynule zpracovávat po¾adavky v¹ech klientù musà proto ka¾dé spojenà bì¾et ve vlastnÃm vláknu. Obdobná situace je i u SocketFactory, která rovnì¾ pou¾Ãvá blokujÃcà volánà pøi èekánà na dal¹Ãho klienta.
1999-03-05 | Jaroslav Gergic |