Elosztott rendszerek NGM_IN005_1 Kommunikációs paradigmák Kommunikáció folyamatok között Távoli vs. helyi folyamatok közötti kommunikáció Kérések és válaszok üzenetek átvitele komm. hálózat sebessége protokoll overhead komm. paradigma (koncepció) one-to-one vs. one-to-many message passing vs. remote procedure call 2
Üzenet-továbbításos kommunikáció Felhasználó (programozó) expliciten tudatában van a mechanizmus használatának Üzenet fejrész (alk. üzenet típustól f., rendszer) test (vált. hossz) struktúrálatlan vagy struktúrált 3 Prezentáció, marshalling Alkalmazás adatainak üzenetté alakítása (marshalling) kiterítés (linearizálás, pakolás) Üzenet visszaalakítása adatokká (unmarshalling) Megoldások kanonikus átmeneti forma vev! oldal megfelel! formára hoz Alkalmazás adatai Alkalmazás adatai Alkalmazás adatszerkezetei Megjelenítési kódolás Üzenet Üzenet Üzenet Megjelenítési visszakódolás Argument marshaller 4
Alap primitívek send & receive primitívek szemantikája direkt vagy indirekt portok blokkolós vs. nem blokkolós pufferelt vs. nem pufferelt Client is blocked megbízható vs. nem megbízható struktúrált üzenetváltások send(server,client, message) receive(server, buffer) receive(client, buffer) Server is blocked send(client,server, response) 5 Direkt és indirekt portok Direkt vev! folyamat explicit megnevezése one-to-one kommunikáció Indirekt vev! helyének megadása portok várakozó sorok (FIFO, urgent messages) tulajdonlás: OS, process 6
Blokkolás vs. nem blokkolás Primitív végrehajtása okoz-e késleltetést a kiadó folyamatban Blokkolás send üzenet teljes továbbításáig válasz megérkezéséig receive üzenet érkezéséig 7 Blokkolás vs. nem blokkolás (folyt.) Send receive() send() Trap to kernel Process blocked send() Client is blocked Trap to kernel Process blocked send() Trap to kernel Process blocked Server is blocked Client is blocked message being sent message copied to buffer Process running Client is blocked message being sent, received by server, response sent back Server running send() Return from kernel Process unblocked Return from kernel Process unblocked blocking non-blocking 8
Blokkolás vs. nem blokkolás (folyt.) Receive blocking receive non-blocking receive message availability check értesítés interrupttal 9 Pufferelés Küld! oldal teli puffer várakozás Client hibajelzés Fogadó oldal OS nincs puffer üzenet eldobása pufferelés az op. rendszerben Pufferben eltöltött id! állapot id!közbeni megváltozása Server Buffer OS Client OS Server Buffer OS 10
Megbízhatóság Megbízható primitívek szerver, kliens kiesése hálózati hibák csomagvesztés, duplikálás, sorrend nem tartás újraküldés send() Helyreállítás helye hálózat (különböz! protokoll szintek) végfolyamatok send() Timeout send() Timeout send() unreliable reliable 11 Megbízhatóság (folyt.) Többszörös kérések legalább egyszer végrehajtás (idempotens kérések) pontosan egyszer végrehajtás request request (id n) Timeout Timeout request (id n) Timeout multiple executions Timeout request (id n) response (id n) table of current requests response ack (id n) 12
Távoli eljáráshívás (RPC) Programozási nyelvi szint" távoli számítógép felé irányuló eljáráshívás, az üzenet továbbítási mechanizmus elfedésével helyi API használata elosztott programok írásának támogatása transzparens, heterogén környezetben is valójában IPC technika 13 RPC hívás 14
RPC jellemz!k Transzparens implementációnak meg kell!rizni a helyi eljáráshívás szemantikáját A helyi statikus típus-ellen!rzésnek (compiler) a távoli hívásokra is m"ködni kell Nyelvi alaptípusokkal m"ködnie kell Konkurencia és kivétel kezelés kell A fejleszt! és futtató környezetnek támogatni kell a fordítást, kötést, betöltést hálózati viszonyok között Helyreállító mechanizmusok az elárvult elemek kezelésére 15 RPC argumentumok és visszatérési értékek Paraméter átadás érték szerint referenciával Adatmozgatás másolások üzenetekre tördelés Hálózati prezentáció marshalling összetett adatszerkezetek 16
RPC csonkok Elosztási transzparencia megvalósítása távolról meghívható eljárások megvalósítása megegyezik a helyivel a távoli hívás a helyivel egyez! (compiler detektálja) Csonk (stub, proxy) compiled interpreted 17 RPC fejlesztés DCE RPC 18
Interface Definition Language Specifikációs nyelv iterfészek (eljárások, hívási paraméterek és visszatérési értékek típusának) leírására Prog. nyelv független IDL compiler marshalling kód csonk rutinok a távoli hívásokhoz 19 Kötések Kliensek RPC csonkjainak szerverhez kötése Interfész nevek és belépési pont számok Id! horizont hosszútávú kötések statikus névszerver Kötési id! fordításkor szolgáltatás indításkor (export, import mechanizmus) híváskor 20
RPC meghibásodások Meghibásodások gép leállások kommunikációs hibák Hiba kimenetek eljárás nem hajtódik végre eljárás egyszer hajtódik végre eljárás többször végrehajtódik eljárás részlegesen végrehajtódik 21 RPC meghibásodások (folyt.) Csomópontok lehalása és újraindulása Kliens kérés elküldése után -> árva szerver detektálhatja állapot változás? (nem idempotens) roll back - költséges újraindult kliens ismételt kérése nem detektálható (új ID) Hívás RPC szolg. Komm. prot. Komm. prot. RPC szolg. Hívott elj. Hálózat T return Kliens Szerver 22
RPC meghibásodások (folyt.) Szerver lehalás kliens timeout miatt megismétli a kérést állapot változás? time stamp - pre és post crash kérések boot ID tranzakció kezelés (roll back) replay cache Hívás RPC szolg. Komm. prot. Komm. prot. RPC szolg. Hívott elj. Hálózat return Kliens Szerver 23 Átviteli megoldások Standard szállítási réteg megoldások fölött pontosan egyszer átvitel megoldása kérés elveszik timer, ismételt kérés válasz elveszik idempotens: ismételt kérés szerverben replay cache hosszan tartó feldolgozás duplikált kérés felismerése a szerveren - folyamatban válasz küldése 24
RPC és az OSI referencia modell RPC Alkalmazási r. Megjelenítési r. Session r. Szállítási r. Hálózati r. Adatkapcsolati r. Hívás prog. nyelvb!l pl. XDR RPC timerek, ID-k pl. UDP pl. IP pl. Ethernet 25 SunRPC Egyszer", széleskörben használt RPC megoldás pl. Sun NFS programok és eljárások számokkal azonosítva portmap pl. NFS-nél prog és proc számok -> jól ismert port számok kliensnek ismerni kell a szervert prezentációs megoldás: XDR 26
XDR XDR: external Data Representation C típusok (kivéve fv. pointerek) Kanonikus átmeneti forma Címkézetlen (kivéve tömbhossz) Lefordított csonkok 27 XDR (folyt.) #define MAXNAME 256; #define MAXLIST 100; struct item { int count; char name[maxname]; int list[maxlist]; }; bool_t xdr_item(xdr *xdrs, struct item *ptr) { return(xdr_int(xdrs, &ptr->count) && xdr_string(xdrs, &ptr->name, MAXNAME) && xdr_array(xdrs, &ptr->list, &ptr->count, MAXLIST, sizeof(int), xdr_int)); } Count Name 3 7 J O H N S O N List 3 4 9 7 8 321 2 65 28
SunRPC és szállítási réteg Elméletben száll. protokoll független valóságban tudnia kell milyen a száll. réteg protokoll UDP kérés/válasz egy-egy datagramban szerverben replay cache TCP megbizható szállítás RPC-ben nincs újraküldés és replay cache 29 SunRPC üzenetek 0 31 0 31 XID XID MsgType = CALL MsgType = REPLY (a) RPCVersion = 2 (b) Status = ACCEPTED Program Data Version Procedure Credentials (variable) Verifier (variable) Data 30
Csoport kommunikáció Szimultán kérés több szerver felé folyamat csoportok több folyamat kezelés egy absztrakcióval azonos szolgáltatás (telj. skálázás, szolg. szint) csoport egységes megjelenítése 31 Távoli metódus hívás RMI 32
Sorkezel!k Üzenet bróker 33 Csoport struktúrák Peer csoport kooperáló csoporttagok Kliens-szerver csoport szerverek peer csoportja + kliensek Diffúziós csoport egy kliens kérés szerverek és kliensek csoportjának Hierarchikus csoport kliens-szerver csoportok clusterei S S S P P P P C C C S S S S S S S S S S S S C C C C 34
Elosztott megosztott memória Distributed shared memory Absztrakciós megoldás adat megosztásra read és write primitívek párhuzamos használat, aszinkron komm. memória címtérbe megjelenítve valójában nincs közös fizikai memória DSM PM Proc. PM Proc. PM Proc. 35 Elosztott megosztott memória (folyt.) Programozási modell osztott memóriakezelés (lock, szemafor) szimultán vagy id!ben nem átfed! (perzisztencia) használat Hatékonyság nincs jelent!s eltérés az üzenetváltásos megoldásokhoz képest Memória terület struktúrálása struktúrálatlan adattípus szerinti kollekciók asszociatív memória, adatbázis Szinkronizáció szükséges a konzisztencia biztosítására 36
Socketek Op. rendszer nyújtotta interfész kommunikációs szolgáltatásokhoz socket: kommunikációs végpont domain: kommunikációs közeg protokoll socket címzése AF-INET TCP, UDP / IP 37 Socketek (folyt.) Socket típusok stream socket megbizható, duplex INET: TCP prot. UNIX pipe ~ socket pár sequenced packet socket NS domain - stream rekord határokkal datagram socket nem megbizható datagramok INET: UDP raw socket új protokollokhoz 38
Socketek (folyt.) socket m"veletek socket(domain, type, protocol) bind(socket-descr, name-pointer,length-of-name) connect(socket-descr,name-pointer,length-of-name) listen(socket-descr,queue-length) accept(socket-descr) sendto(socket-descr,data-buff-pointer,data-length,address-buffpointer,addr-length) recvfrom(socket-descr, data-buff-pointer,data-length,address-buffpointer,addr-length) 39 Socketek (folyt.) Client process socket bind connect socket bind listen accept Server process INET socket INET socket Well-known service name INET socket New socket for servicing TCP/IP TCP/IP Network driver Network driver 40