Obsah Dal¹í Pøedchozí

5.3 Sí»ový server (net_svr)

Sí»ový server tvoøí nadstavbu nad vyhledávacím serverem. Jeho úkolem je pøedev¹ím ke¹ování dat pro klienty (a tím sní¾ení nároènosti komunikace na ¹íøku pásma). Zároveò také pøebírá èást zátì¾e z vyhledávacího serveru a díky mo¾nosti provozu na jiném uzlu sítì ne¾ vyhledávací server dovoluje faktické distribuování zátì¾e. Dal¹ím dùvodem pro oddìlený bìh mù¾e být bezpeènostní politika organizace. Sí»ový server lze spustit na veøejnì pøístupném uzlu, kde¾to vyhledávací server mù¾e bì¾et na bezpeèném zvenku nedosa¾itelném uzlu.

V úvodu této kapitoly probereme nejprve architekturu sí»ového serveru. V dal¹í podkapitole se podíváme na jedno ze základních roz¹íøení slu¾eb sí»ového serveru oproti vyhledávacímu a to na koncept u¾ivatelských sezení (sessions) a slu¾eb s tím spojených (5.3.1), které umo¾òují pøipojit k systému Agent i pomìrnì jednoduché klienty. V poslední èásti této kapitoly je rozveden dotazovací a manipulaèní jazyk sí»ového serveru, tedy vlastnì API tohoto serveru (5.3.2).

Architektura sí»ového serveru

Na obrázku 5.3-1 vidíte schematické znázornìní architektury sí»ového serveru. Pokud se vám zdá, ¾e se pøíli¹ neli¹í od vyhledávacího serveru, máte pravdu. Pro srovnání si mù¾ete znovu prohlédnout obrázek 5.2-1 v kapitole 5.2. Jediná na první pohled patrná odli¹nost je ta, ¾e namísto databázového jádra je tu dal¹í èást komunikaèního rozhraní. S pomocí této vrstvu provádí sí»ový server delegování vìt¹iny volání na vyhledávací server.

Obrázek 5.3-1 - architektura sí»ového serveru

Obrázek 5.3-1 - architektura sí»ového serveru

Komunikace probíhá stejným zpùsobem a pøes stejné objekty komunikaèní vrstvy jako na vyhledávacím serveru. Zde je v¹ak bì¾ný ClientSocket, jinak urèený pro klienty serverù systému Agent, roz¹íøen o dal¹í dvì tøídy. První z nich se jmenuje Connector (C) a druhá ConnectorProxy. Jak ji¾ asi víte, servery v systému Agent pou¾ívají asynchronní zpùsob komunikace realizovaný pomocí pøená¹ení zpráv. Ov¹em pracovat s takovou asynchronièností není vùbec snadné. Kdyby i komunikace mezi jádrem sí»ového serveru a vyhledávacím serverem probíhalo asynchronnì, kód sí»ového serveru by se nepìknì zkomplikoval.

A právì proto byly implementovány vý¹e zmínìné objekty. Tyto tøídy mají za úkol vytvoøit pro objekty sí»ového serveru iluzi synchronního volání slu¾by na vyhledávacím serveru. Princip je následující. Ka¾dý objekt jádra (známý "dìlník" z vyhledávacího serveru) musí mít referenci na objekt tøídy ConnectorProxy (nebo být jejím potomkem). Na této instanci vyvolá metodu proceed(), které pøedá parametry volání a referenci na návratovou hodnotu. Tato metoda deleguje volání na Connector. Connector automaticky vygeneruje unikátní identifikátor zprávy, po¹le ji vyhledávacímu serveru a pozastaví bìh volajícího vlákna. Mezitím separátní vlákno neustále pøijímá odpovìdi od vyhledávacího serveru a páruje odpovìdi k pùvodním voláním.

V okam¾iku kdy dojde ke spárování odpovìdi s dotazem, je vyplnìna návratová hodnota a volající vlákno je probuzeno. To pøeète návratovou hodnotu a normálnì se vrátí z voláné funkce. Pro klienta objektu ConnectorProxy to jednodu¹e vypadá, jakoby zavolání metody proceed() trvalo o nìco déle ne¾ je obvyklé.

V dolní èásti schématu jsou podobnì jako u vyhledávacího serveru nakresleny objekty reprezentující ostatní slu¾by. 'Mana¾er sezení' je podrobnì probrán v následující kapitole. Modul "Databáze u¾ivatelù" je jednoduchou slu¾bou øídící pøipojování a pøístupová práva u¾ivatelù. 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 sí»ové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ù sí»ové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) sí»ového serveru.

Komunikaèní vrstva sí»ového serveru (pravá èást schématu) funguje na stejných principech jako u vyhledávacího serveru (kapitola 5.2).

Opìt platí, ¾e v¹echny objekty, oznaèené na schématu ¹ir¹ím okrajem jsou tak zvané aktivní objekty, tedy objekty obsahující vlastní vlákno výpoètu.


1999-03-05 Jaroslav Gergic