Presentation is loading. Please wait.

Presentation is loading. Please wait.

ProActive Architecture of an Open Middleware for the Grid

Similar presentations


Presentation on theme: "ProActive Architecture of an Open Middleware for the Grid"— Presentation transcript:

1 ProActive Architecture of an Open Middleware for the Grid
Romain Quilici ObjectWeb Architecture meeting July 2nd 2003

2 ProActive A Java API + Tools for Parallel, Distributed Computing
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)

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

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

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

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 Creating active objects
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);

9 ProActive: Reuse and seamless
Two key features: Polymorphism between standard and active objects Type compatibility for classes (and not only interfaces) Needed and done for the future objects also Dynamic mechanism (dynamically achieved if needed) Wait-by-necessity: inter-object synchronization Systematic, implicit and transparent futures (“value to come”) Ease the programming of synchronizations, and the reuse of routines "A" "pA" a p_a foo (A a) { a.g (...); v = a.f (...); ... v.bar (...); } O.foo(a) : a.g() and a.f() are « local » O.foo(p_a): a.g() and a.f()are remote + Async.»

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

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

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

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

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

15 Future Objects A res = ActiveObject.foo();
Stub_A Future Proxy res Caller 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

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

17 Automatic Continuation
Caller a b

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

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

20 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) Caller a r2=b.bar(r1) Future_r1 b

21 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) Caller a Future_r1 b Future_r1 Future_r2

22 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) Caller a UPDATE Future_r1 b Future_r1 Future_r2 Value_r1

23 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) Caller a UPDATE Future_r1 b Future_r1 Value_r1 Future_r2 Value_r1

24 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) Caller a UPDATE Future_r1 b Future_r1 Value_r1 Future_r2 Value_r1 Value_r2

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

26 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 Preservation of the « rendez-vous » Asynchronous

27 Group Structure Stub Stub Proxy Proxy for Group Stub Proxy Jvm1 Jvm2
Remote OA Proxy for Group Jvm3 Stub Proxy Remote OA

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

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

30 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)

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 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)

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 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 direct

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 direct

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 direct

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 direct

38 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 direct

39 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)

40 Migration Caller Body Body Object Object 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

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

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

43 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

44 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

45 Mapping Virtual Nodes: example
<virtualNodesDefinition> <virtualNode name="Dispatcher"/> </virtualNodesDefinition> <map virtualNode="Dispatcher"> <jvmSet> <vmName value="Jvm1"/> </jvmSet> </map> <jvm name="Jvm1"> <acquisition method="rmi"/> <creation> <processReference refid="jvmProcess"/> </creation> </jvm> Definition of Virtual Nodes Definitions and mapping Mapping of Virtual Nodes

46 Mapping Virtual Nodes: example
<processDefinition id="jvmProcess"> <jvmProcess class="org.objectweb.proactive.core.process.JVMNodeProcess"/> </processDefinition> <processDefinition id="rshProcess"> <rshProcess class="org.objectweb.proactive.core.process.rsh.RSHJVMProcess" hostname="sea.inria.fr"> <processReference refid="jvmProcess"/> </rshProcess> JVM on the current Host Infrastructure informations JVM started using RSH

47 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() );

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

49 Components based on Fractal Model

50 Distributed and Parallel Components
Group proxy Group proxy A B C D

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

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

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

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

55 Security Non-functionnal security Hierarchical domains
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

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


Download ppt "ProActive Architecture of an Open Middleware for the Grid"

Similar presentations


Ads by Google