Stránka 1 z 1

Jak na rozdělovací server

Napsal: ned 21. lis 2010, 21:31
od Ladic
Zdravim,

nevíte někdo na jakém principu funguje rozdělovací server? Mám zadání úlohy: Rozdělování zátěže UDP. Realizujte programy klienta, serveru a rozdělovacího serveru pro přímý tisk na více tiskárnách. Servery představují tiskárny, přijaté znaky ihned vypisují na obrazovku (žádná tisková fronta, jde o jednoduché interaktivní servery). Rozdělovací server dokáže obsluhovat až tři různé servery (tiskárny), jejichž adresy si při spuštění načte z textového souboru. Jak tiskárny, tak rozdělovací server naslouchají na jediném portu s číslem 8008. Klient nesmí poznat zda komunikuje přímo s tiskárnou nebo s rozdělovacím serverem. Program klienta přebírá jako argumenty adresu rozdělovacího serveru (popř. přímo tiskárny) a název tisknutého textového souboru. Rozdělovací server nasměruje každý jednotlivý tisk z klienta vždy na první volnou tiskárnu. Pokud je tedy dostatek volných tiskáren, tak tisk z více klientů musí probíhat souběžně.

Program muze byt realizovan bud vlaknove nebo procesama, klient muze byt v jave, ale server musi byt v C. Potrebovat bych nak osvetlit co vse musi obsahovat rozdelovaci server, a jakym zpusobem by mel pristupovat ke koncovym serverum. Diky za kazkou radu.

Re: Jak na rozdělovací server

Napsal: ned 21. lis 2010, 22:27
od OndraSter
Nevím co přesně potřebuješ vymyslet, ale čistě z teoretického pohledu:

Ten Rozdělovací Server (RS) bude zvenku vypadat úplně stejně jako normální tiskárna (stejné API, stejná komunikace jako s opravdovou tiskárnou, stejný protokol). Když příjde požadavek, uloží se do fronty. Fronta se bude každých X (mili)sekund dívat*, jestli je nějaká tiskárna volná vhodným dotazem na onen server (tiskárnu). Jakmile se nějaká uvolní, z RS se vyšle požadavek s daným dokumentem na onu tiskárnu.

* Dá se to optimalizovat, že při 0 úlohách se ten polling vypne a při příchodu prvního dokumentu se nejdříve podívá co je volné a pokud nic, tak teprve pak jí přídá do fronty a zapne polling. Popř polling vůbec nepoužívat, pokud tiskárny umí hlásit "mám volno!"

Re: Jak na rozdělovací server

Napsal: pon 22. lis 2010, 00:26
od Ladic
Presně tohle jsem chtěl vědět, jinak protokol musí být UDP. Jen mi neni jasna jedna vec,( jelikož v C moc nedělam, hlavně v jave a server musí být v C:( )jakym zpusobem mezi sebou budou komunikovat RS a 3 tiskove servery? Podobne jako je vztah klient - server? Čili, nějak si nedokazu predstavit toto spojení. klient -> RS -> 1.server
-> 2.server
-> 3.server
Kdyby to byl jeden server a vice klientu, tak ano, ale pokud je to jeden klient a vice serveru a mezi nimi rozdelovaci, tak moc nevim, s tim jsem se setkal poprve. Diky za radu.

Re: Jak na rozdělovací server

Napsal: pon 22. lis 2010, 14:29
od OndraSter
Klient bude vždycky komunikovat s tím RS. RS bude komunikovat s všemi TS.

O realizaci v C/Javě bohužel nepomůžu, já jsem směrem .NET, Javu rád nemám (fujtožerepaměti), C moc neznám.