PA160 Distribuované aplikace - základní protokoly (Programování distribuovaných systémU) RPC ■ RPC - Remote Proceduře Call ■ Tvaří se jako „obyCejna" procedura ■ Telo je vykonano v jinem procesu (na jinem stroji] ■ DUvody zavedení ■ VySSí Uroven abstrakce neZ sokety ■ Nezavisie na architektuře ci operacním systému ■ Predavaní jednoduchych i sloZitych datovych typu ■ VyZaduje podporu (jmenne sluZby, bezpecnost, ...) PA160 2 Jaro 2010 RPC Standardy ■ Tri základní ■ ONC (Open Network Computing) ■ DCE (Distributed Computing Environment) ■ Microsoftí COM/DCOM „standard" PA160 3 Jaro 2010 RPC Standardy - popis ■ ONC (definováno v RFC 1831) ■ vyvinuto SUNem ■ nejrozsířenejsí, dostupne prakticky na všech operačních systémech ■ DCE (http://www.opengroup.org/dce/) ■ RovneZ široce dostupne ■ Zahrnuje komplexní sluZby ■ Postupne rozsíreno o objektovy přístup ■ COM (http://www.microsoft.com/com/ ■ Proprietární ■ V soucasne dobe rozsíření DCE, puvodne componentní model (jeden pocítác) PA160 4 Járo 2010 ONC RPC ■ RPC jedinečně definován: ■ Číslem programu: skupina procedur ■ Číslem verze: verze ■ Číslem procedury: jedinečný identifikátor konkrétní procedury ■ UZivátel mUZe přiřazovat čísla programu v rozsahu 0x20000000—0x3FFFFFFF (20 milionu čísel) PA160 5 Jaro 2010 ONC - části ■ Clientská část (příklad) ■ cint_create(): de facto napojení na skupinu procedur (server) ■ clnt_call(): zavolaní konkretní procedury ■ clnt_destroy(): odpojení se ■ Serverova čast (příklad) ■ svc_register(): registruj skupinu u portmapperu ■ svc_getargs(): převezmi argumenty (XDR zakodovane) ■ svc_sendreply(): zassli výsledek volaní (XDR) ■ svc_unregister(): zrus registraci PA160 6 Jaro 2010 Portmapper ■ Zprostředkuje přístup ke službám ■ Naslouchá na portu 111 ■ Udržuje mapu programu á odpovídajících Čísel portu ■ Použití * 1. Server se zaregistruje na portmapperu * 2. Client žíska aktualní Číslo portu konkrétní služby od portmapperu (dotaž na portu 111) * 3. Client se spojí se serverem PA160 7 Jaro 2010 ONC API - tvorba klienta CLIENT * clnt_create(host, prog, vers, prot) char *host; — hostname u_long prog; — program number u_ong vers; — version number char *prot; — protocol (udp, tcp, unix) ■ Vrací handle na skupinu procedur PA16Q B Jaro 2010 ONC API - registrace serveru extern bool_t svc_register(xprt, prog, vers, dispatch, protocol) SVCXPRT *xprt; u_long prog; u_long vers; void (*dispatch)(); u_long protocol; //tcp or udp, zero means do not register ■ Registruje program a jeho verzi ■ Vrací true PA160 9 Jaro 2010 ONC API - volání klienta enum clnt_stat CLNT_CALL(rh, proc, xargs, argsp, xres, resp, timeout) CLIENT *rh; — handle from clnt_create u_long proc; — registered procedure xdrproc_t xargs; — XDR to encode input caddr_t argsp; -- address of input agr xdrproc_t xres; -- XDR to decode output caddr_t resp; -- address of result buffer struct timeval timeout; -- timeout PA160 10 Jaro 2010 XDR ■ Problem s odlisnou architekturou komunikujících pocítacu ■ Pořadí bytu, typy císel, řetezce, enumerovane typy ■ XDR: exchange Data Representation funkce ■ Kodují a dekodují data ■ Konkretní implementace je zavisla na architektuře ■ Zajisltují strojovou nezavislost při vymene dat PA16Q 11 Jaro 2Q1Q Vestavené XDR konverzní funkce Používaný v clnt_call() Jednoduche funkce (príklady) xdr_int() xdr_char() xdr_u_short xdr_bool() xdr_long() xdr_u_int() xdr_wrapstring() xdr_short() xdr_enum() xdr_void() K dispožici jsou i agregacní funkce (príklady) xdr_array() xdr_string() xdr_union() xdr_vector() xdr_opaque() Rovneež je možno definovat uživatelske funkce umožnující manipulovat s nepreddefinovanými typy PA160 12 Jaro 2010 Generování kodu pro použití RPC ■ Nevyhody nativního RPC ■ SloZite API, teZko laditelne ■ PouZitíXDRsloZite Veetsinou se pouZíva stale stejnym Zpusobem ■ Resení: pouZití generatoru kodu (rpcgen). Generuje: ■ Hlavickovy soubor ■ Potřebne XDR funkce ■ stubs na strane klienta i serveru ■ rpcgen pro C/C++, jrpcgen pro Javu PA160 13 Jaro 2010 Chovaní RPC ■ Neúspěchy ■ Nelze nalězt server ■ Ztraceny poZadavek ■ Ztraceny výsledek ■ Zhroucení serverů (po přijetí poZadavkú) ■ Zhroucení klienta PA160 14 Jaro 2010 Ztracený požadavek ■ Používání timeoutů ■ Používání retransmise ■ át least once: álespon jednou ■ át most once: nejvýse jednou ■ exáctlý once: práve jednou ■ no guárántees: bež žáruký o poctu retránsmisí PA160 15 Járo 2010 Ztracena odpověd ■ Rozlisení typu poZádávku ■ Idempotentní: je mozno zopákovát (bez vedlejsích efektu) * Ztrátá řesená prostou retránsmisí ■ Neidempotentní: má vedlejsí efekty * Retránsmise musí byt zprácováná serverem • Rozezná retránsmisi • Neopákuje telo • Vydá vysledek, pouze pokud jej má v cáche PA160 16 Járo 2010 Zhroucení serveru Pořadí požadavek versus výpadek Výpadek před žpracovaním požadavku ■ Retransmise Výpadek před odesianím odpovedi ■ Vratí chýbu Client není schopen zjistit příCinu PA160 17 Jaro 2010 Zhroucení klienta ■ Procedura zůstává na serveru ■ zmařený výkon CPU ■ drZí zdroje (napr. zamCene soubory) ■ můze odpovídat „podruha" po rebootu klienta ■ Mozne řeSení: soft služby (nikoliv souCast RPC) PA160 18 Jaro 2010 RPC - literatura ■ Douglas E. Comer: Computer Networks and Internets, Prentice Hall, 2001 (3. vydanl); kapitola 33 ■ SUN developers guide: http://docs.sun.com/?q=QNC+RPC ■ PrednaSky: http://www.cee.hw.ac.uk/courses/5nmi/index.htm PA160 19 Jaro 2010 Sítove systemy souborU Použití RPC pro prístup k vždalenemu systému souboru Network File System - NFS ■ Nedefinuje system souboru, ale vzdálený přístup k nemu ■ Nežavisly na operacním systemu, systému souboru i architekture * Puvodnee vyvinut firmou Sun * Cílem nabídnout prístup i mimo svet UNIXu ■ Typicky model klient/server * Lokalní požadavky na operace systemu souboru jsou posílany na vždaleny server * Pro tento ucel se využíva RPC PA160 20 Jaro 2010 Připojení NFS Pripojení (mount) prvním krokem ■ Stejný princip jako u lokalních systemu souboru ■ Castecna zavislost na OS (adresař vs. oznacení ,,disku") Server drzí seznam opravnení (ACL) pro klienty Pripojení mohou být kaskadovana PA160 21 Jaro 2010 NFS Protokol ■ NFS protokol definuje operace, ktere musí server podporovat ■ Ctení a žapis souboru ■ Prístup k atributum souboru ■ Vyhledaní souboru v adresari ■ Ctení a prace s adresari ■ Prace s odkažý (links) ■ Vsechný týto operace jsou implementovaný jako RPC ■ Zpravidla prostřednictvím demona (nfsd) ■ Lokalní operace transformovana do RPC volaní serveru ■ Server implementuje tato volaní nad svým lokalním sýstemem souboru PA160 22 Jaro 2010 Bežstávovovst NFS nema operace otevření a Zavrení souboru NFS je bezstavové ■ Standardní server si nepamatuje poZadavky ani klienty ■ KaZda RPC musí poskytnout vsechnu potrebnou informaci Vyhody ■ Robustní, v principu neovlivneeno vypadky serveru Nevyhody ■ Zapisy musí byt synchronní, klient ocekava, Ze data byla skutecne Zapsana PA160 23 Jaro 2010 Konzistence ■ Pouze v omezeném rozsahu ■ Predpokladá se, Ze konzistenci si klienti zajistí nezávisle na NFS ■ Atomicita operací ■ Write ma být atomický, ale nemusí se vejít do jedineho paketu * MUze pak dojít k prokladaným RPC PA160 24 Jaro 2010 Konzistence II ■ Vyrovnávácí pámeti ■ Server * Pro ctení bez problemu, zápis ne ■ Klient * Problemátická, vyrovnávácí pámeí ná klientu (1) není prístupná klientu (2) * Problemáticke pro ctení i zápis PA160 25 Járo 2010 Distribuované objekty ■ DO - distribuce enkapsulovanych dat na pocítacích v síti ■ Pouze data (funkce nejsou prenositelne) - distribuovana enkapsulovana data ■ Skutecne přenositelne funkce (Java) ■ Slozene dokumenty ■ Data plus prohlízec ci editor ■ Puvodne pouze pro vymeenu dat mezi jednotlivými aplikacemi ■ Pozdeji pridana „distribuce" ■ Distribuované objekty nebo distribuované komponenty (data plus funkce) PA160 26 Jaro 2010 Distribuovane objekty II ■ Objekt ■ Enkapsulace dat: stav ■ Operace nad datý: metody ■ Zpřístupnení metod: rozhraní ■ Distribuce ■ Jednoducha * Server: Data a metodý * Klient: Rozhraní Vzdaiene objekty ■ Plne distribuovane * Data a metodý distribuovaný přes nekolik serveru PA160 * Klient: Rozhraní 27 Jaro2010 Vazba klienta ■ Proxy ■ Implementace rozhraní objektu ■ Implicitní vazba ■ Príme volaní vzdalene metody ■ Klient nerozezna lokalní a vzdaleny objekt ■ Explicitní vazba ■ Specialní funkce pro navazaní objektu ■ Teprve pak jsou zpřístupneny jeho metody PA160 28 Jaro 2010 Odkazy na objekty ■ Charakter globálního ukazatele ■ Zakladní informace ■ Adresa stroje s objektem ■ Identifikace objektu ■ Location server ■ Nalezení objektu ■ Registrace na globalní server * Potencialní Úzke místo ■ Nezavislost prenosových protokolu ■ Výber vhodne proxý PA160 29 Jaro 2010 Plná abstrakce ■ Skrytí všech závislostí ■ Odkaz je tvořen implementační „ručkou" (Implementation handle) ■ Kompletní implementace proxy ■ Skryvá veškeré detaily (místo, protokol, ...) ■ BezpeCnostní implikace PA160 30 Járo 2010 Statické a dynamické volání ■ Statické volání (invocation) ■ Předefinované definice rozhraní ■ Analogie RPC ■ Bud IDL nebo interní (Java) ■ Dynamicke volaní (invocation) ■ Vyber metody proveden aZ behem vypoctu invoke(object, method, inpuLparam, outpuLparam) ■ Príklad: string.append(data) invoke(string, id(append), data) id(append) je funkce vracející identifikator metody PA160 31 Jaro 2010 Implementace rozhraní ■ Aplikace ma klientskou a serverovou cast ■ Klient komunikuje prostrednictvím stubs ■ Server komunikuje prostrednictvím skeletonu PA160 32 Jaro 2010 Stubs ■ Lokální reprezentace vzdáleného objektu ■ Proxy ■ Zájíštují ■ Inicializaci a volání vzdáleneho objektu (analogie cint_create) ■ Zpracování argumentu (XDR) ■ Informace o zaCátku volání (cint.cali) ■ Převzetí výsledku, prípadne výjimek ■ Ukoncení volání (clnt_destroy) PA160 33 Jaro 2010 Skeleton ■ Zanorení metodý v serveru ■ Výber konkretní implementace metodý ■ ZajisLijí ■ Prevžetí argumentu ■ Vlastní provedení/volaní metodý ■ Předaní argumentu PA160 34 Jaro 2010 Registry ■ Adresar ■ Server registruje metodu ■ Asociuje jmeno se vZdalenym objektem ■ Klient hleda vZdalenou metodu jmenem ■ Metoda je volana pote, co je její ZaZnam naleZen v Registry PA160 35 Jaro 2010 Objektově orientované přístupy ■ Příklady realizace ■ JAVA RMI ■ CORBA ■ DCOM PA160 36 Jaro 2010 Java RMI ■ Jáva Remote Method Invocation ■ Plnohodnotný objektový přístup ■ Pouze vzdálene objekty ■ Mále rozdíly mezi lokálními á vzdálenymi objekty ■ Klonování * Pouze ná serveru * Explicitní (nová) vázbá ■ Synchronizáce * Nád vzdálenymi objekty není Úplná (pouze ná proxy) PA160 37 Járo 2010 Vyvolaní objektu Opet pouze male rozdílý mezi lokalním a vzdaleným volaním Serializace parametru ■ Vlastnost, umoznující enkapsulaci a předaní objektu (parametru) * Platformove zavisle objektý (např. deskriptor souboru ci soket) nejsou serializovatelne Lokalní objektý předavaný hodnotou Vzdalene objektý předavaný referencí PA160 38 Jaro 2010 Odkazy ■ Vzdálený objekt je definován dvema třídami ■ Server class: implementace kOdu na strane serveru ■ Client class: implementace proxý ■ Proxý je serializovatelna ■ Je moZne předavat odkaz na vzdalený objekt ■ Teoretický celý býte kod proxý PA160 39 Jaro 2010 Java RMI ■ Shrnutí vlastností ■ Neomezene vyvolaní objektu na vzdalenych strojích ■ Plna integrace distribuovaných objektu ■ Podpora zpetnych volaní (callback) ze serveru ■ Bezpecnost a spolehlivost ■ Pokrocile moznosti ■ Moznost aktivace persistentních objektu ■ Garbage collection i na distribuovaných (vzdalenych) objektech ■ Replikace serveru PA160 40 Jaro 2010 DCOM ■ Distributed Components Object Model firmy Microsoft ■ Postaven na COM * Compound documents * OLE (Object Linking and Emebdding) * Definován ve 300 strankove specifikaci (1995) ■ DCOM nabízí komponenty na vzdaienych strojích * Maximalizace transparentního přístupu (access transparency) PA160 41 Jaro 2010 DCOM Základní komponenty architektury ■ Microsoft IDL (MIDL) ■ Inteface Identifier (IID), 128 bitu ■ Objekty typu trída (a CreateInstance) PA160 42 Jaro 2010 CORBA ■ Common Object Request Broker ■ Standard, definovaný OMG (Object Management Group) http://www.omg.org ■ Typický reprezentant modelu klient-server ■ Zakladnícíl: ■ Zajistit, abý objekty distribuovane v síti dokazalý spolupracovat. ■ Zakladní funkce ■ Nalezení objektu ■ Smerovaní poZadavku ■ Vyvolaní metodý PA160" Navracení výsledku 43 jaro2oio Object Management Architecture ■ Systémové komponenty ■ Object Request Brokers (ORBs) ■ Object Services ■ AplikaCní komponenty ■ SpoleCne služby ■ AplikaCní objekty PA160 44 Jaro 2010 Object Request Brokers ■ Propojují jednotlivé komponenty (objekty) ■ Zajištují vyhledávání ■ Zprostředkovávají posílání zpráv PA160 45 Járo 2010 Objektové služby ■ Vytváření a odstranění objektů ■ Relokace a replikace objektů ■ Hlídaní prístůpů k objektům PA160 46 Jaro 2010 Interface Description Language ■ V podstate zajiStuje premostení mezi implementacemi ■ Definuje rozhraní client/server PA160 47 Jaro 2010 Úložiště Interface Repository ■ Uchováva rozhraní k objektům (alternativa k IDL) Implementation Repository ■ Informace o ůmístení objektů a prostredí (OS, ...) ■ Informace o implementaci (verze, ...) - vhodne pro ladení ■ PoůZita při aktivaci objektů ■ Implementace se můsí registrovat PA160 48 Jaro 2010 Služby ■ Zakladní sluzby v CORBA 3.Q (první cast) Added zakladní architektura pro workflow systemy Structuring Mechanisms for OTS Collection vytvaření a manipulace se skupinami objektu Concurrency podpora soubeznych procesu, pouzíva transakcní sluzby a zamykaní Enhanced View reprezentace hodin (casovacu) of Time Events prace s udalostmi (registrace, publikace a přijímaní udalostí) Externalisation export/import objektu PA16Q 49 Jaro 2Q1Q Služby - pokračovaní Základní služby v CORBA 3.0 (druhá část) Licensing licence, licenční politiky Life Cycle vytváření, kopírování, presun a destrukce objektu Management of práce s obory událostí Event Domains Naming jmenná službá (pro objekty) Notification rožsíření žákládní práce s událostmi Persistent State persistentní objekty á mánipuláce s nimi Query dátábážove dotážy PA160 50 Járo 2010 SluZby - pokračovaní Zakladní sluzbý v CORBA 3.0 (tretí cast) Relationship explicitní prace se vztahý mezi objektý a vlastnostmi Security bezpecnost, autentizace, autorizace, sifrovaní Telecoms Log logovaní udalostí Time podpora operací s casem a casovými znamkami Trading Object v podstateř výhledavací sluzřba (pro sluzřbý) Transaction transakce (vcřetneř dvoufazoveho commitu) PA160 51 Jaro 2010