PA160 Distribuované aplikace - zák (Programování distribuovaný Materiál dlG http: //www. cee. hw. ac . uk/courses/5nml/ RPC ■ RPC - Remote Proceduře Call ■ Tváří se jako „obyčejná" procedura ■ Tělo je vykonáno v jiném procesu (na jiném stroji] ■ Důvody zavedení ■ Vyšší úroveň abstrakce než sokety ■ Nezávislé na architektuře či operačním systému ■ Předávání jednoduchých i složitých datových typů ■ Vyžaduje podporu (jmenné služby, bezpečnost, . PA160 2 RPC Standardy ■ Tři základní ■ ONC (Open Network Computing) ■ DCE (Distributed Computing Environment) ■ Microsoftí COM/DCOM „standard" PA160 3 RPC Standardy - popis ONC (definováno v RFC 1831) ■ vyvinuto SUNem ■ nerozšířenější, dostupné prakticky na všech operačnícl DCE (http: //www. opengroup. org/dce/) ■ Rovněž široce dostupné ■ Zahrnuje komplexní služby ■ Postupně rozšířeno o objektový přístup COM (http: //www.microsof t. com/com/ ■ Proprietami ■ V současné době rozšíření DCE, původně componentn počítač) 60 4 ONC RPC ■ RPC jedinečně definován: ■ Číslem programu: skupina procedur ■ Číslem verze: verze ■ Číslem procedury: jedinečný identifikátor konkrétní pro( ■ Uživatel může přiřazovat čísla programů v rozsahu 0x20000000—0x3FFFFFFF (20 milionů čísel) PA160 5 ONC - části Clientská část (příklad) ■ cint_create(): de facto napojení na skupinu procedur clnt_call(): zavolání konkrétní procedury ■ cint_destroy(): odpojení se Serverová část (příklad) svc_register(): registruj Skupinu U portmapperu ■ svc_getargs(): převezmi argumenty (XDR zakódované ■ svc_sendreply(): zašli výsledek volání (XDR) ■ svc_unregister(): zruš registraci 60 6 Portmapper ■ Zprostředkuje přístup ke službám ■ Naslouchá na portu 111 ■ Udržuje mapu programů a odpovídajících čísel portů ■ Použití * 1. Server se zaregistruje na portmapperu * 2. Client získá aktuální číslo portu konkrétní služby o< (dotaz na portu 111) * 3. Client se spojí se serverem PA160 7 ONC API - tvorba klienti 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 PA160 8 ONC API - registrace servi 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 při úspěchu PA160 9 ONC API - volani klientc 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 XDR ■ Problém s odlišnou architekturou komunikujících ■ Pořadí bytů, typy čísel, řetězce, enumerované typy ■ XDR: exchange Data Representation funkce ■ Kódují a dekódují data ■ Konkrétní implementace je závislá na architektuře ■ Zajištují strojovou nezávislost při výměně dat PA160 11 Vestavěné XDR konverzní fu Používány V clnt_call() Jednoduché funkce (příklady) xdr_int() xdr_char() xdr_u_short xdr_bool() xdr_long() xdr_u_int() xdr_wrapstring() xdr_short() xdr_enum() xdr_void() K dispozici jsou i agregační funkce (příklady) xdr_array() xdr_string() xdr_union() xdr_vector() xdr_opaque() Rovněž je možno definovat uživatelské funkce umo manipulovat s nepředdefinovanými typy PA160 12 Generování kódu pro použití ■ Nevýhody nativního RPC - Složité API, těžko laditelné - Použití XDR složité Většinou se používá stále stejným způsobem ■ Řešení: použití generátoru kódu (rpcgen). Generuje: ■ Hlavičkový soubor ■ Potřebné XDR funkce stubs na straně klienta i serveru ■ rpcgen pro C/C++, j rpcgen pro Javu PA160 13 Chování RPC ■ Neúspěchy ■ Nelze nalézt server ■ Ztracený požadavek ■ Ztracený výsledek ■ Zhroucení serveru (po přijetí požadavku) ■ Zhroucení klienta PA160 14 Ztracený požadavek ■ Používání timeoutů ■ Používání retransmise ■ at least once: alespoň jednou ■ at most once: nejvýše jednou ■ exactly once: právě jednou ■ no guarantees: bez záruky o počtu retransmisí PA160 15 Ztracená od poved ■ Rozlišení typu požadavků ■ Idempotentní: je možno zopakovat (bez vedlejších efekl * Ztráta řešena prostou retransmisí ■ Neidempotentní: má vedlejší efekty * Retransmise musí být zpracována serverem • Rozezná retransmisí • Neopakuje tělo • Vydá výsledek, pouze pokud jej má v cache PA160 16 Zhroucení serveru ■ Pořadí požadavek versus výpadek ■ Výpadek před zpracováním požadavku ■ Retransmise ■ Výpadek před odesláním odpovědi ■ Vrátí chybu ■ Client není schopen zjistit příčinu PA160 17 Zhroucení klienta ■ Procedura zůstává na serveru ■ zmařený výkon CPU ■ drží zdroje (např. zamčené soubory) ■ může odpovídat „podruhé" po rebootu klienta ■ Možné řešení: soft služby (nikoliv součást RPC) PA160 18 RPC - literatura ■ Douglas E. Comer: Computer Networks and Inte Hall, 2001 (3. vydání); kapitola 33 ■ SUN developers guide: http://docs.sun.com/? ■ Přednášky: http://www.cee.hw.ac.uk/courses/5nml/indes PA160 19 Distribuované objekty ■ DO - distribuce enkapsulovaných dat na počítač ■ Pouze data (funkce nejsou přenositelné) - distribuovaní data Skutečně přenositelné funkce (Java) ■ Složené dokumenty ■ Data plus prohlížeč či editor ■ Původně pouze pro výměnu dat mezi jednotlivými aplikí ■ Později přidána „distribuce" ■ Distribuované objekty nebo distribuované kompc plus funkce) PA160 20 Distribuované objekty II Objekt ■ Enkapsulace dat: stav ■ Operace nad daty: metody ■ Zpřístupnění metod: rozhraní Distribuce ■ Jednoduchá * Server: Data a metody * Klient: Rozhraní Vzdálené objekty Plně distribuované * Data a metody distribuovány přes několik serverů 60 * Klient: Rozhraní 21 Vazba klienta ■ Proxy ■ Implementace rozhraní objektu ■ Implicitní vazba ■ Přímé volání vzdálené metody ■ Klient nerozezná lokální a vzdálený objekt ■ Explicitní vazba ■ Speciální funkce pro navázání objektu ■ Teprve pak jsou zpřístupněny jeho metody PA160 22 Odkazy na objekty Charakter globálního ukazatele Základní informace ■ Adresa stroje s objektem ■ Identifikace objektu Location server ■ Nalezení objektu ■ Registrace na globální server * Potenciální úzké místo Nezávislost přenosových protokolů ■ Výběr vhodné proxy 60 23 Plná abstrakce ■ Skrytí všech závislostí ■ Odkaz je tvořen implementační „ručkou" (Implerr handle) ■ Kompletní implementace proxy ■ Skrývá veškeré detaily (místo, protokol, ...) ■ Bezpečnostní implikace PA160 24 Statické a dynamické volá ■ Statické volání (invocation) ■ Predefinované definice rozhraní ■ Analogie RPC ■ Buď IDL nebo interní (Java) ■ Dynamické volání (invocation) ■ Výběr metody proveden až během výpočtu invoke(object, method, inpuLparam, outpuLparam) ■ Příklad: string.append(data) invoke(string, id(append), data) id(append) je funkce vracející identifikátor metody PA160 25 Implementace rozhraní ■ Aplikace má klientskou a serverovou část ■ Klient komunikuje prostřednictvím stubs ■ Server komunikuje prostřednictvím skeletonů PA160 26 Stubs ■ Lokální reprezentace vzdáleného objektu ■ Proxy ■ Zajištují ■ Inicializaci a volání vzdáleného objektu (analogie cint_< ■ Zpracování argumentů (XDR) ■ Informace o začátku volání (cint_caii) ■ Převzetí výsledků, případně výjimek ■ Ukončení volání (clnt_destroy) PA160 27 Skeleton ■ Zanoření metody v serveru ■ Výběr konkrétní implementace metody ■ Zajištují ■ Převzetí argumentů ■ Vlastní provedení/volání metody ■ Předání argumentů PA160 28 Registry Adresář Server registruje metodu ■ Asociuje jméno se vzdáleným objektem Klient hledá vzdálenou metodu jménem ■ Metoda je volána poté, co je její záznam nalezen v 60 29 Objektově orientované pří si ■ Příklady realizace ■ JAVA RMI ■ CORBA ■ DCOM PA160 30 Java RMI ■ Java Remote Method Invocation ■ Plnohodnotný objektový přístup ■ Pouze vzdálené objekty ■ Malé rozdíly mezi lokálními a vzdálenými objekty ■ Klonování * Pouze na serveru * Explicitní (nová) vazba ■ Synchronizace * Nad vzdálenými objekty není úplná (pouze na proxy) PA160 31 Vyvolání objektu Opět pouze malé rozdíly mezi lokálním a vzdáler Serializace parametrů ■ Vlastnost, umožňující enkapsulaci a předání objektu (pí * Platformově závislé objekty (např. deskriptor soubori serializovatelné Lokální objekty předávány hodnotou Vzdálené objekty předávány referencí 60 32 Odkazy ■ Vzdálený objekt je definován dvěma třídami ■ Server class: implementace kódu na straně serveru ■ Client class: implementace proxy ■ Proxy je serializovatelná ■ Je možné předávat odkaz na vzdálený objekt ■ Teoreticky celý byte kód proxy PA160 33 Java RMI ■ Shrnutí vlastností ■ Neomezené vyvolání objektů na vzdálených strojích ■ Plná integrace distribuovaných objektů ■ Podpora zpětných volání (callback) ze serveru ■ Bezpečnost a spolehlivost ■ Pokročilé možnosti ■ Možnost aktivace persistentních objektů ■ Garbage collection i na distribuovaných (vzdálených) ot ■ Replikace serverů PA160 34 DCOM ■ Distributed Components Object Model firmy Micr ■ Postaven na COM * Compound documents * OLE (Object Linking and Emebdding) * Definován ve 300 stránkové specifikaci (1995) DCOM nabizí komponenty na vzdálených strojích * Maximalizace transparentního přístupu (access trans PA160 35 DCOM ■ Základní komponenty architektury - Microsoft IDL (MIDL) ■ Inteface Identifier (IID), 128 bitů ■ Objekty typu třída (a Createlnstance) PA160 36 CORBA Common Object Request Broker Standard, definovaný OMG (Object Managemen http://www.omg.org Typický reprezentant modelu klient-server Základní cíl: ■ Zajistit, aby objekty distribuované v síti dokázaly spolup Základní funkce ■ Nalezení objektu ■ Směrování požadavku ■ Vyvolání metody so ■ Navrácení výsledku 3? Object Management Architet ■ Systémové komponenty ■ Object Request Brokers (ORBs) ■ Object Services ■ Aplikační komponenty ■ Společné služby ■ Aplikační objekty PA160 38 Object Request Brokers ■ Propojují jednotlivé komponenty (objekty) ■ Zajištují vyhledávání ■ Zprostředkovávají posílání zpráv PA160 39 Objektové služby ■ Vytváření a odstranění objektů ■ Relokace a replikace objektů ■ Hlídání přístupu k objektům PA160 40 Interface Description Langt ■ V podstatě zajištuje přemostění mezi implement* ■ Definuje rozhraní client/server PA160 41 Úložiště Interface Repository ■ Uchovává rozhraní k objektům (alternativa k IDL) Implementation Repository ■ Informace o umístění objektu a prostředí (OS, ...) ■ Informace o implementaci (verze, ...) - vhodné pro lad< ■ Použita při aktivaci objektu ■ Implementace se musí registrovat PA160 42 Služby Základní služby v CORBA 3.0 (první část) Added základní architektura pro workflow systér Structuring Mechanisms for OTS Collection vytváření a manipulace se skupinami obj Concurrency podpora souběžných procesů, pou transakční služby a zamykání Enhanced View reprezentace hodin (časovačů) of Time Events práce s událostmi (registrace, publik a přijímaní událostí) Extemalisation export/import objektů PA160 43 Služby - pokračování ■ Základní služby v CORBA 3.0 (druhá část) Licensing licence, licenční politiky Life Cycle vytváření, kopírování, přesun a destrut jektů Management of práce s obory událostí Event Domains Naming jmenná služba (pro objekty) Notifícation rozšíření základní práce s událostmi Persistent State persistentní objekty a manipulace s nimi Query databázové dotazy PA160 44 Služby - pokračování Základní služby v CORBA 3.0 (třetí část) Relationship explicitní práce se vztahy mezi objekty ; nostmi bezpečnost, autentizace, autorizace, šifrc logování událostí podpora operací s časem a časovými zní Trading Object v podstatě vyhledávací služba (pro služb Transaction transakce (včetně dvoufázového commiti Security Telecoms Log Time PA160 45