Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Romain Quilici www.objectweb.org/ProActive OASIS Team INRIA -- CNRS - I3S -- Univ. of Nice Sophia-Antipolis, IUF July 2nd 2003 ProActive Architecture.

Similar presentations


Presentation on theme: "1 Romain Quilici www.objectweb.org/ProActive OASIS Team INRIA -- CNRS - I3S -- Univ. of Nice Sophia-Antipolis, IUF July 2nd 2003 ProActive Architecture."— Presentation transcript:

1 1 Romain Quilici www.objectweb.org/ProActive OASIS Team INRIA -- CNRS - I3S -- Univ. of Nice Sophia-Antipolis, IUF July 2nd 2003 ProActive Architecture of an open Middleware for the Grid

2 2 A uniform framework: An Active Object pattern A formal model behind: Prop. Determinism, insensitivity to deploy. Main features: Remotely accessible Objects (RMI, JINI, --> UDDI) Asynchronous Communications with synchro: automatic Futures Group Communications, Migration (mobile computations) XML Deployment Descriptors Interfaced with various protocols: rsh,ssh,LSF,Globus,--> SOAP Visualization and monitoring: IC2D In the ObjectWeb Consortium since April 2002 (LGPL License) ProActive A Java API + Tools for Parallel, Distributed Computing

3 3 Table of Contents ProActive Runtime Active Objects Model Future Objects and Automatic Continuation Groups Communication Active Objects Migration Abstract Deployment Model Components Infrastructure Security

4 4 ProActive Runtime Transparently created when using ProActive Only one by JVM -- Singleton pattern Offer basics services to create or receive Active Objects Accessible remotely ProActive Nodes are defined on PART --> possibly N nodes by JVMs Partially hidden from users --> Use of Nodes (look like remote) Use of patterns to improve integration –Smart Proxy –Adapter –Factory ….

5 5 ProActive Runtime Architecture RMI case PART Smart Proxy PART PART Remote Node1 PART Stub Jvm1 Jvm2 Singleton Adapter Factory Node1 properties

6 6 Table of Contents

7 7 Active Object Model Active objects : coarse-grained structuring entities (subsystems) Each active object: - possibly owns many passive objects - has exactly one thread. No shared passive objects -- Parameters are passed by deep-copy Asynchronous Communication between active objects Future objects and wait-by-necessity. Full control to serve incoming requests (reification)

8 8 Instantiation-based: A a = (A)ProActive.newActive(«A», params, node); To get a non-FIFO behavior (Class-based): class pA extends A implements RunActive { … } Object-based: A a = new A (obj, 7);... a = (A)ProActive.turnActive (a, node); Creating active objects

9 9 Active Object Components Body Object Proxy Stub Object Caller Components of an Active Object

10 10 Active Object Architecture RMI case Jvm1 Jvm2 Caller Stub Object Proxy Body Smart Proxy Body Stub Remote Body Object RMI Specific Byte code generation with asm

11 11 Body Request Receiver Reply Receiver Reply Sender Service Object RequestLine FuturePool Body Architecture

12 12 1 1 - Call 2 2 - Reception of Request 3 3 - Selection of Request 4 4 - Execution 5 5 - Sending back the reply Caller Body Request Receiver Reply Receiver Reply Sender ServiceObjet Request to an Active Object

13 13 Table of Contents

14 14 Future Objects A res = ActiveObject.foo(); Future Proxy Stub_A res The caller receives a Future : it continues its execution If it tries to access to the value or res, it is blocked in the future proxy (Wait By Necessity), until this value is available Caller

15 15 Object When the called object finish the computation of res, the value is returned to the caller Future is updated transparently Future Proxy Stub_A res Caller Future Objects A res = ActiveObject.foo();

16 16 Automatic Continuation Callerba

17 17 Callerba r1=a.foo() Automatic Continuation A Future can be passed by parameter or by result: chains of futures will be updated by Automatic Continuation. … r1=a.foo() …

18 18 Callerba Future_r1 Automatic Continuation A Future can be passed by parameter or by result: chains of futures will be updated by Automatic Continuation. … r1=a.foo() …

19 19 Callerba Future_r1 r2=b.bar(r1) Automatic Continuation A Future can be passed by parameter or by result: chains of futures will be updated by Automatic Continuation. … r1=a.foo() … r2=b.bar(r1)

20 20 Callerba Future_r1 Future_r2 Automatic Continuation A Future can be passed by parameter or by result: chains of futures will be updated by Automatic Continuation. … r1=a.foo() … r2=b.bar(r1)

21 21 Callerba Future_r1 Future_r2Value_r1 UPDATE Automatic Continuation A Future can be passed by parameter or by result: chains of futures will be updated by Automatic Continuation. … r1=a.foo() … r2=b.bar(r1)

22 22 Callerba Future_r1 Future_r2Value_r1 UPDATE Value_r1 Automatic Continuation A Future can be passed by parameter or by result: chains of futures will be updated by Automatic Continuation. … r1=a.foo() … r2=b.bar(r1)

23 23 Callerba Future_r1 Future_r2Value_r1 UPDATE Value_r1Value_r2 Automatic Continuation A Future can be passed by parameter or by result: chains of futures will be updated by Automatic Continuation. … r1=a.foo() … r2=b.bar(r1)

24 24 Table of Contents

25 25 Group Communication Manipulate groups of Active Objects in a simple and typed manner Typed groups of active and remote objects. Maintain the ‘dot ’ notation, language property Dynamic generation of groups of results Be able to express high-level collective communication broadcast scatter, gather Based on the ProActive communication mechanism Replication of N ‘ single ’ communications Each communication is « adapted » Preservation of the « rendez-vous »

26 26 Group Structure Proxy for Group Remote OA Stub Jvm1 Jvm2 Jvm3 StubProxyStubProxy Remote OA

27 27 A Construction of a Result Group Typed Group Java or Active Object A ag = newActiveGroup (…) V v = ag.foo(param); v.bar(); V

28 28 Table of Contents

29 29 Migration of Active Objects Migration is initiated by the active object itself through a primitive: migrateTo Can be initiated from outside through any public method The active object migrates with: all pending requests all its passive objects all its future objects Automatic and transparent forwarding of: requests (remote references remain valid) replies (its previous queries will be fullfilled)

30 30 Characteristics and optimizations Same semantics guaranteed (RDV, FIFO order point to point, asynchronous) Safe migration (no agent in the air!) Local references if possible when arriving within a VM Tensionning (removal of forwarder)

31 31 Characteristics and optimizations Same semantics guaranteed (RDV, FIFO order point to point, asynchronous) Safe migration (no agent in the air!) Local references if possible when arriving within a VM Tensionning (removal of forwarder)

32 32 Characteristics and optimizations Same semantics guaranteed (RDV, FIFO order point to point, asynchronous) Safe migration (no agent in the air!) Local references if possible when arriving within a VM Tensionning (removal of forwarder) direct

33 33 Characteristics and optimizations Same semantics guaranteed (RDV, FIFO order point to point, asynchronous) Safe migration (no agent in the air!) Local references if possible when arriving within a VM Tensionning (removal of forwarder) direct

34 34 Characteristics and optimizations Same semantics guaranteed (RDV, FIFO order point to point, asynchronous) Safe migration (no agent in the air!) Local references if possible when arriving within a VM Tensionning (removal of forwarder) direct forwarder

35 35 Characteristics and optimizations Same semantics guaranteed (RDV, FIFO order point to point, asynchronous) Safe migration (no agent in the air!) Local references if possible when arriving within a VM Tensionning (removal of forwarder) direct forwarder

36 36 Characteristics and optimizations Same semantics guaranteed (RDV, FIFO order point to point, asynchronous) Safe migration (no agent in the air!) Local references if possible when arriving within a VM Tensionning (removal of forwarder) direct forwarder

37 37 Characteristics and optimizations Same semantics guaranteed (RDV, FIFO order point to point, asynchronous) Safe migration (no agent in the air!) Local references if possible when arriving within a VM Tensionning (removal of forwarder) direct forwarder

38 38 API for Mobile Agents Basic primitive: migrateTo public static void migrateTo (String u) public static void migrateTo (Node n) // String or ProActive node (VM) public static void migrateTo (Object o) // joinning another active object Primitive to automatically execute action upon migration public static void onArrival (String r) // execute r upong arrival on a new Node public static void onDeparture (String r)

39 39 Migration Body Request Receiver Reply Receiver Reply Sender Service Object RequestLine FuturePool Migration Manager Body Request Receiver Reply Receiver Reply Sender Service Object RequestLine FuturePool Migration Manager Caller

40 40 Migration Body Request Receiver Reply Receiver Body Request Receiver Reply Receiver Reply Sender Service Object RequestLine FuturePool Migration Manager Caller Forwarder

41 41 Table of Contents

42 42 Abstract Deployment Model Objectives Problem: Difficulties and lack of flexibility in deployment Avoid scripting for: configuration, getting nodes, connecting, etc. A key principle: Abstract Away from source code: Machines Creation Protocols Lookup and Registry Protocols Context: Grid Distributed Objects, Java Not legacy-code driven, but adaptable to it

43 43 Descriptors: based on Virtual Nodes Virtual Node (VN): Identified as a string name Used in program source Configured (mapped) in an XML descriptor file --> Nodes Operations specified in descriptors: Mapping of VN to JVMs (leads to Node in a JVM on Host) Register or Lookup VNs, Create or Acquire JVMs Components Definition, Security Settings Program Source Descriptor (RunTime) |----------------------------------| |--------------------------------------| Activities (AO) --> VN VN --> JVMs --> Hosts Runtime structured entities: 1 VN --> n Nodes in n JVMs

44 44 Definitions and mapping Definition of Virtual Nodes Mapping of Virtual Nodes Mapping Virtual Nodes: example

45 45 Mapping Virtual Nodes: example <rshProcess class="org.objectweb.proactive.core.process.rsh.RSHJVMProcess" hostname="sea.inria.fr"> Infrastructure informations JVM on the current Host JVM started using RSH

46 46 Virtual Nodes in Programs 1. Load the descriptor file Descriptor pad = ProActive.getDescriptor ("file://ProActiveDescriptor.xml"); 2. Activate the mapping VirtualNode vn = pad.activateMapping ("Dispatcher"); // Triggers the JVMs 3. Use nodes Node node = vn.getNode();... C3D c3d = ProActive.newActive("C3D", param, node); log (... "created at: " + node.name() + node.JVM() + node.host() );

47 47 Table of Contents

48 48 D C Components

49 49 Distributed and Parallel Components Group proxy A B C D A A B C P

50 50 a b body mobility asynchronism Stub_a proxy JVM1 JVM2 component meta - objects component representative Components Infrastructure

51 51 Components Infrastructure a b body mobility asynchronism proxy JVM1 JVM2 component meta - objects component representative

52 52 Components Request a b body proxy component meta - objects component representative method calls are reified

53 53 Table of Contents

54 54 Security Non-functionnal security located inside the meta-level, transparent for applications. Hierarchical domains Dynamic policy negotiation Certification chain to identify users, JVMs, objects User certificate => Application certificate => active object certificate User private key used only once for generating application certificate Security policies set by deployment descriptors

55 55 Request to an Active Object Body Request Receiver Reply Receiver Service Object Security Manager Reply Sender Body Request Receiver Reply Receiver Service Object Security Manager Reply Sender Proxy Request Sender Policy computation Keys exchange Request pathSecurity mechanims encrypt decrypt


Download ppt "1 Romain Quilici www.objectweb.org/ProActive OASIS Team INRIA -- CNRS - I3S -- Univ. of Nice Sophia-Antipolis, IUF July 2nd 2003 ProActive Architecture."

Similar presentations


Ads by Google