Download presentation
Presentation is loading. Please wait.
Published byLionel Ricard Modified over 5 years ago
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
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.