Obsah | Dal¹à | Pøedchozà |
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
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 |