Elosztott rendszerek NGM_IN005_1 Köztesréteg megoldások (middleware-ek) Middleware alapú elosztott rendszerek Magas átlátszósági fok Eltér! operációs rendszerek Modellfügg! kommunikációs mechanizmus Er!forráskezelés csomópontonként Változó skálázhatóság Nyílt rendszerek 2
Távoli objektum hívása Objektumok egységbezárt adatok (állapot) és m"veletek interfész Elosztott objektumok proxy skeleton 3 Fordítási és futási idej" objektumok Obj. orientált nyelv objektumai fordítási idej" objektumok (osztályok) Nyelvfüggetlen objektumok futási idej" objektumok adapter objektumok (wrapper) Perzisztens és tranziens objektumok 4
Kliens csatlakozása Proxy betöltése, inicializálása Implicit binding csatlakozás hivatkozás feloldásakor Explicit binding bind eljárás explicit hívása szükséges Implementáció hálózati és szolg. azonosítás objektum azonosítás location service 5 Távoli metódusok hívása RPC szer" paraméterátadás és csomagolás +objektum hivatkozások nincs szükség csonkokra interfész leírás static invocation dynamic invocation 6
Java RMI Objektum és állapota egyetlen gépen Távoli interfészt megvalósító proxy Klónozás csak a szerveren, kliensben újra csatlakozás kell synchronized monitorok a proxykon (nincs elosztott szinkronizálás) serializable objektumok átadhatók paraméterként Client Proxies Remote Reference Layer Remote Transport Layer Server Skeletons Remote Reference Layer Remote Transport Layer 7 Java RMI implementáció proxy és skeleton generálás - rmic Remote reference layer különböz! protokollok (csak unicast implementált) Naming service binding Szerver Remote interface RemoteObject RemoteServer UnicastRemoteObject 8
Java RMI implementáció (folyt.) Csomagok java.rmi: Remote interface, MarshalledObject class java.rmi.registry: remote registry java.rmi.server: remote objects, stubs, skeletons (RMI API) java.rmi.activation: persistent object references java.rmi.dgc: remote garbage collector 9 Java RMI (pl.) import java.rmi.remote; import java.rmi.remoteexception; import java.util.date; Szerver public interface DateServer extends Remote{! public Date getdate() throws RemoteException; } import java.rmi.*; import java.rmi.server.*; import java.util.date; public class DateServerImpl extends UnicastRemoteObject implements DateServer{! public DateServerImpl() throws RemoteException{! }! public Date getdate(){!!! return new Date();! }!! public static void main(string[] args) throws Exception{!! DateServerImpl dateserver=new DateServerImpl();!! System.out.println("Registering to Name Server...");!! Naming.bind("Date-Server",dateServer);!! System.out.println("Registered.");! } } 10
Java RMI (pl., folyt.) import java.rmi.naming; import java.util.date; public class DateClient{! public static void main(string[] args) throws Exception{!! if(args.length!=1)!!! throw new IllegalArgumentException("Syntax: DateClient hostname");!! DateServer dateserver=(dateserver)naming.lookup("rmi://"+args[0]+"/date-server");!! Date when=dateserver.getdate();!! System.out.println(when);! } } Kliens javac DateServer.java javac DateServerImpl.java rmic DateServerImpl javac DateClient.java DateServerImpl_Stub.class rmiregistry java DateServerImpl java DateClient localhost 11 Üzenet orientált megoldások Aszinkron kommunikáció üzenetek tárolása a kézbesíthet!ségig (perzisztens kommunikáció) pufferek a kommunikációs megoldásban 12
Perzisztencia és szinkronitás Perzisztens kommunikáció 13 Perzisztencia és szinkronitás (folyt.) Tranziens kommunikáció 14
Perzisztencia és szinkronitás (folyt.) Kézbesítés és válasz 15 Üzenet orientált middleware Üzenet sorkezel! rendszerek perzisztens aszinkron kommunikáció hosszú (perces nagyságrend) továbbítási id!k várakozási sorok gyengén csatolt komunikáció 16
Üzenet orientált middleware (folyt.) Sorkezel! primitívek Primitive Meaning Put Get Poll Append a message to a specified queue Block until the specified queue is nonempty, and remove the first message Check a specified queue for messages, and remove the first. Never block. Notify Install a handler (callback) to be called when a message is put into the specified queue. 17 Üzenet sorkezel! Forrás várakozási sor Cél várakozási sor (címzés) Relay sorkezel! overlay network gatewayek 18
Üzenet közvetít! Egységesített eloszott rendszer kialakítása rugalmas skálázás eltér! formátumok alkalmazás szint" gatewayek üzenet bróker (alkalmazás a sorkezel! fölött) 19 IBM MQSeries Sorkezel!k Üzenet csatornák (szállítási réteg) Message Channel Agent átvitel kézi vagy hálózaton keresztüli indítás paraméterek egyeztetése 20
IBM MQSeries (folyt.) Csatorna jellemz!k Attribute Transport type FIFO delivery Message length Description Determines the transport protocol to be used Indicates that messages are to be delivered in the order they are sent Maximum length of a single message Setup retry count Specifies maximum number of retries to start up the remote MCA Delivery retries Maximum times MCA will try to put received message into queue 21 IBM MQSeries (folyt.) Üzenetátvitel Címzés sorkezel!, sor küld! sor routolási táblák cék sorkezel!, kimeneti sor egyedi sorkezel! nevek helyi aliasok 22
IBM MQSeries (folyt.) Message Queue Interface Primitive Description MQopen Open a (possibly remote) queue MQclose Close a queue MQput MQget Put a message into an opened queue Get a message from a (local) queue 23 CORBA Common object request broker architecture Specifikáció szabványos elosztott objektum rendszerek kialakítására OMG 24
CORBA (folyt.) Objektummodell remote object model CORBA IDL - szintaxis definíció nyelv függ! leképezési szabályok ORB 25 CORBA (folyt.) Dinamikus kérések általános invoke m"velet implementálás az objektumban interface repository IDL compiler -> interface repository id implementation repository (ORB függ!) 26
CORBA (folyt.) Szolgáltatások Service Collection Query Concurrency Transaction Event Notification Externalization Life cycle Licensing Naming Property Trading Persistence Relationship Security Time Description Facilities for grouping objects into lists, queue, sets, etc. Facilities for querying collections of objects in a declarative manner Facilities to allow concurrent access to shared objects Flat and nested transactions on method calls over multiple objects Facilities for asynchronous communication through events Advanced facilities for event-based asynchronous communication Facilities for marshaling and unmarshaling of objects Facilities for creation, deletion, copying, and moving of objects Facilities for attaching a license to an object Facilities for systemwide name of objects Facilities for associating (attribute, value) pairs with objects Facilities to publish and find the services on object has to offer Facilities for persistently storing objects Facilities for expressing relationships between objects Mechanisms for secure channels, authorization, and auditing Provides the current time within specified error margins 27 CORBA (folyt.) Kommunikációs eszközök hívási modellek Request type Failure semantics Description Synchronous At-most-once Caller blocks until a response is returned or an exception is raised One-way Best effort delivery Caller continues immediately without waiting for any response from the server Deferred synchronous At-most-once Caller continues immediately and can later block until response is delivered 28
CORBA (folyt.) Esemény szolgáltatás event channel, supplier, consumer push és pull model Értesítési szolgáltatás események sz"rése 29 CORBA (folyt.) Üzenetkezelés perzisztens kommunikáció aszinkron metódushívás callback model polling model 30
CORBA (folyt.) Folyamatok Kliensek kliens objektum és ORB közé helyezend! megoldások interceptor mechanizmus portable object adapter ORB független szerver oldali kód 31 DCOM Microsoft Windows COM-ból (component object model) n!tt ki Komponensek komponens tehnológia, összetett dokumentumok végrehajtható kód (linked library) 32
DCOM (folyt.) Objektum modell bináris interfészek (metódus pointerek) nyelvfüggetlen interface identifier objektum példányok osztály objektumok gyártó interfésszel 33 DCOM (folyt.) DCOM felépítése 34
DCOM (folyt.) Szolgáltatások CORBA Service DCOM/COM+ Service Windows 2000 Service Collection ActiveX Data Objects - Query None - Concurrency Thread concurrency - Transaction COM+ Automatic Transactions Distributed Transaction Coordinator Event COM+ Events - Notification COM+ Events - Externalization Marshaling utilities - Life cycle Class factories, JIT activation - Licensing Special class factories - Naming Monikers Active Directory Property None Active Directory Trading None Active Directory Persistence Structured storage Database access Relationship None Database access Security Authorization SSL, Kerberos Time None None 35 DCOM (folyt.) Kommunikáció eredetileg szinkron (legfeljebb egyszer) callback: connectable object cancel object: másik szálról megszakítható COM+ aszinkron hívások is (polling model) 36
DCOM (folyt.) Névszolgáltatás Monikerek nem perzisztens objektumok objektum visszaállítási információk Running Object Table Step Performer Description 1 Client Calls BindMoniker at moniker 2 Moniker 3 SCM Loads class object 4 Class object Looks up associated CLSID and instructs SCM to create object Creates object and returns interface pointer to moniker 5 Moniker Instructs object to load previously stored state 6 Object Loads its state from file 7 Moniker Returns interface pointer of object to client 37 DCOM (folyt.) Névszolgáltatás Active Directory Elosztott Windows rendszerek tartományok (domain), domain controller (LDAP) domain tree 38