Virtlab:Protokoly/Rezervační server
Z VirtlabWiki
(Rozdíly mezi verzemi)
												
			
			| Verze z 10:39, 15. 12. 2006 Hra196 (Diskuse | příspěvky) (muj navrh) ← Předchozí porovnání  | 
				Verze z 16:30, 17. 12. 2006 Gry72 (Diskuse | příspěvky) Následující porovnání →  | 
			||
| Řádka 22: | Řádka 22: | ||
| Distribuovaná rezervace prvků je distribuovanou transakcí, vymyslet 2-fázový commit, včetně podpory rollbacku od timeoutu při neaktivitě rezervačního klienta. Rezerv. server obsluhuje více spojení najednou, promyslet, zda nevznikají potenciální deadlocky. | Distribuovaná rezervace prvků je distribuovanou transakcí, vymyslet 2-fázový commit, včetně podpory rollbacku od timeoutu při neaktivitě rezervačního klienta. Rezerv. server obsluhuje více spojení najednou, promyslet, zda nevznikají potenciální deadlocky. | ||
| + | |||
| + | === Administrátorské CLI rezervačního serveru - navrh === | ||
| + | * Výpis všech rezervací (dle časového intervalu od-do) | ||
| + | * Smazání záznamů o již proběhnuvších rezervacích | ||
| + | * Smazání budoucí rezervace | ||
| + | |||
| == Komunikační protokol (návrh [[Uživatel:hra196|Tomáše Hrabálka]]) == | == Komunikační protokol (návrh [[Uživatel:hra196|Tomáše Hrabálka]]) == | ||
Verze z 16:30, 17. 12. 2006
Protokol rezervačního serveru
První návrh:
- Dotaz na prvky lokality daného rezervačního serveru (parametry: ID dotazující se lokality - filtrace podle ní, časový úsek - spec. případ bez udání času vrátí všechny potenciálně zapůjčitelné prvky pro žádající lokalitu)
 
-  Dotaz na všechny prvky systému (zevnitř lokality lokálnímu rezervačními serveru, dotazy zvnějšku lokality budou filtrovány aplikací serveru (nepřicházejí z privátní zdrojové adresy)
- slouží jako proxy, zeptá se všech rezervačních serverů jiných lokalit (zprávou dotaz na prvky lokality)
 - může být speciálním případen zprávy pro dotaz na prvky lokality s nastaveným příznakem žádosti o rekurzi.
 
 
- Zadost o rezervaci - DOPRACOVAT PARAMETRY A MOZNE ODPOVEDI NA ZPRAVU
 - Zrušení rezervace podle globálního čísla rezervace (u sebe nebo rekurzivně u všech, rekurze přijímána jen při poždavku zevnitř lokality)
 - Výpis rezervací – výpis rezervační tabulky (lokálního rezervačního serveru nebo rekurzivně, ale v rekurzivním případě vrátí jen rezervace rezervace z tázající se lokality)
 
ID rezervace – bude vymýšlet rezervující lokalita (název lokality + sekvenční číslo). Bude sloužit i k možnosti zruseni rezervace
Při komunikaci mezi rezervačními servery uvádět jako parametr ID tázající se lokality + vymyslet systém autentizace, aby se ID tázající lokality nedalo podvrhnout.
Lze počítat s tím, že komunikace půjde IPSec tunelem.
Distribuovaná rezervace prvků je distribuovanou transakcí, vymyslet 2-fázový commit, včetně podpory rollbacku od timeoutu při neaktivitě rezervačního klienta. Rezerv. server obsluhuje více spojení najednou, promyslet, zda nevznikají potenciální deadlocky.
Administrátorské CLI rezervačního serveru - navrh
- Výpis všech rezervací (dle časového intervalu od-do)
 - Smazání záznamů o již proběhnuvších rezervacích
 - Smazání budoucí rezervace
 
Komunikační protokol (návrh Tomáše Hrabálka)
Výpis ze souboru reserv/doc/popis.txt:
 Popis komunikačního protokolu
 =============================
 - pres TCP spojeni
 - textove prikazy, oddelene <CR>
 - prvni radek urcuje prikaz, dalsi jeho argumenty
 - na poradi argumentu nezalezi
 - odeslani prazdneho radku, jen <CR>, potvrdi, ze vsechny argumenty byly odeslany 
 - spojeni ukonceno vzdy na zadost klienta
 - server po komunikace neukoncuje spojeni, pouze po urcitem timeoutu
 
 Zjisteni obecne nabidky RS
 --------------------------
 Prikaz: "GET OFFER\n"
 Argument (povinny): "FOR +'jednoznacny nazev lokality'\n" napr. "FOR vsb_ostrava\n"
 Odpoved: XML soubor s prefiltrovanou nabidkou fyzickych zarizeni pro danou lokalitu
 
 Zjisteni nabidky celeho distribuovaneho RS
 -----------------------------------------
 Argument (povinny): DISTRIB
 Odpoved: XML soubor s prefiltrovanou nabidkou fyzickych zarizeni pro cely distribuovany RS
 
 Zjisteni nabidky v danem case (Co je volne?)
 --------------------------------------------
 Argument (nepovinny): "TIME FROM YYYY-MM-DD HH:MM TO YYYY-MM-DD HH:MM\n"  
                 napr. "TIME FROM 2006-12-24 09:45 TO 2007-01-01 15:14\n"
 Odpoved: XML soubor s nabidkou vsech fyzickych zarizeni lokalne nebo v celem Distr VL pro danou lokalitu,
          podle argumentu (DISTRIB)
 
 Potvrzeni rezervace
 -------------------
 - Rezervace je potvrzovana dvojim volanim prikazu "COMMIT\n"
 - Jeho prvni zavolani na vzdaleny rezervacni server znamena, ze si server dany cas zablokuje,
   ostatnim ho neposkytne a ceka (dany cas) na druhy COMMIT. 
 - Druhy COMMIT je zavolan, byl-li prvni u vsech serveru uspesny
 - Nebyl-li uspesny, volame prikaz ROLLBACK
 - Nastane-li timeout, vola se ROLLBACK automaticky
 - Jako argumenty COMMIT jsou ID sitovych prvku dane lokace (kazde jako zvlastni argument)
 - Argumet: DEVICE id_zarizeni\n
 - Odpoved: ACCEPTED<cr> ...kladna odpoved
            REFUSED<cr>  ...zaporna odpoved
 Priklad
 -------
 User->Local RS
 
 -> GET OFFER<cr>
    FOR su_karvina<cr>
    DISTRIB<cr>
    <cr>
 <- <?XML ..... >
 end the connection
 
 -> GET OFFER<cr>
    FOR su_karvina<cr>
    DISTRIB
    TIME FROM 2007-01-18 10:00 TO 2007-01-18 11:00<cr>
    <cr>
 <- <? XML .... >
 -> COMMIT<cr>
    DEVICE r1
    DEVICE r5
    DEVICE sw2
    <cr>
 <- ACCEPTED
 -> COMMIT<cr>
 <- ACCEPTED
 end of the connection
						
			
		