Obsah Dal¹í Pøedchozí

5.2 Vyhledávací server (search_svr)

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

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