ProActive Architecture of an Open Middleware for the Grid Romain - - PowerPoint PPT Presentation

proactive
SMART_READER_LITE
LIVE PREVIEW

ProActive Architecture of an Open Middleware for the Grid Romain - - PowerPoint PPT Presentation

ProActive Architecture of an Open Middleware for the Grid Romain Quilici www.objectweb.org/ProActive ObjectWeb Architecture meeting July 2nd 2003 1 ProActive A Java API + Tools for Parallel, Distributed Computing A uniform framework: An


slide-1
SLIDE 1

1

Romain Quilici www.objectweb.org/ProActive ObjectWeb Architecture meeting July 2nd 2003

ProActive

Architecture of an Open Middleware for the Grid

slide-2
SLIDE 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

slide-3
SLIDE 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

slide-4
SLIDE 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 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 ….

slide-5
SLIDE 5

5

ProActive Runtime Architecture

  • PART

Smart Proxy

PART PART Remote

Node1

PART Stub Jvm1 Jvm2 Singleton Adapter Factory

Node1 properties

slide-6
SLIDE 6

6

Table of Contents

  • ProActive Runtime

ProActive Runtime ProActive Runtime Active Objects Model

  • Future Objects and Automatic Continuation

Future Objects and Automatic Continuation Future Objects and Automatic Continuation

  • Groups Communication

Groups Communication Groups Communication

  • Active Objects Migration

Active Objects Migration Active Objects Migration

  • Abstract Deployment Model

Abstract Deployment Model Abstract Deployment Model

  • Components Infrastructure

Components Infrastructure Components Infrastructure

  • Security

Security Security

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

slide-8
SLIDE 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

slide-9
SLIDE 9

9 "A" "pA" a p_a foo (A a) { a.g (...); v = a.f (...); ... v.bar (...); }

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

O.foo(a) : a.g() and a.f() are «local» O.foo(p_a): a.g() and a.f()are remote + Async.»

slide-10
SLIDE 10

10

Active Object Components

Body Object Proxy Stub Object Caller Components of an Active Object

slide-11
SLIDE 11

11

Active Object Architecture

RMI case

Jvm1 Jvm2

Caller Stub Object Proxy Body Smart Proxy Body Stub Remote Body Body Object RMI Specific Byte code generation with asm

slide-12
SLIDE 12

12

Body

Request Receiver Reply Receiver Reply Sender Service

Object

RequestLine FuturePool

Body Architecture

slide-13
SLIDE 13

13

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 Service Objet

Request to an Active Object

slide-14
SLIDE 14

14

Table of Contents

  • ProActive Runtime

ProActive Runtime ProActive Runtime

  • Active Objects Model

Active Objects Model Active Objects Model Future Objects and Automatic Continuation

  • Groups Communication

Groups Communication Groups Communication

  • Active Objects Migration

Active Objects Migration Active Objects Migration

  • Abstract Deployment Model

Abstract Deployment Model Abstract Deployment Model

  • Components Infrastructure

Components Infrastructure Components Infrastructure

  • Security

Security Security

slide-15
SLIDE 15

15

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

slide-16
SLIDE 16

16

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

slide-17
SLIDE 17

17

Automatic Continuation

Caller b a

slide-18
SLIDE 18

18

Caller b a 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() …

slide-19
SLIDE 19

19

Caller b a

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

slide-20
SLIDE 20

20

Caller b a

Future_r1

r 2 = b . b a r ( r 1 )

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)

slide-21
SLIDE 21

21

Caller b a

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

slide-22
SLIDE 22

22

Caller b a

Future_r1 Future_r1 Future_r2 Value_r1

U P D A T E

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)

slide-23
SLIDE 23

23

Caller b a

Future_r1 Future_r1 Future_r2 Value_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)

slide-24
SLIDE 24

24

Caller b a

Future_r1 Future_r1 Future_r2 Value_r1

UPDATE

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

slide-25
SLIDE 25

25

Table of Contents

  • ProActive Runtime

ProActive Runtime ProActive Runtime

  • Active Objects Model

Active Objects Model Active Objects Model

  • Future Objects and Automatic Continuation

Future Objects and Automatic Continuation Future Objects and Automatic Continuation Groups Communication

  • Active Objects Migration

Active Objects Migration Active Objects Migration

  • Abstract Deployment Model

Abstract Deployment Model Abstract Deployment Model

  • Components Infrastructure

Components Infrastructure Components Infrastructure

  • Security

Security Security

slide-26
SLIDE 26

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

slide-27
SLIDE 27

27

Group Structure

Proxy for Group

Remote OA

Stub

Jvm1 Jvm2 Jvm3

Stub Proxy Stub Proxy

Remote OA

slide-28
SLIDE 28

28

A

Construction of a Result Group

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

slide-29
SLIDE 29

29

Table of Contents

  • ProActive Runtime

ProActive Runtime ProActive Runtime

  • Active Objects Model

Active Objects Model Active Objects Model

  • Future Objects and Automatic Continuation

Future Objects and Automatic Continuation Future Objects and Automatic Continuation

  • Groups Communication

Groups Communication Groups Communication Active Objects Migration

  • Abstract Deployment Model

Abstract Deployment Model Abstract Deployment Model

  • Components Infrastructure

Components Infrastructure Components Infrastructure

  • Security

Security Security

slide-30
SLIDE 30

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)
slide-31
SLIDE 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)

slide-32
SLIDE 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)

slide-33
SLIDE 33

33 direct

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)

slide-34
SLIDE 34

34 direct direct

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)

slide-35
SLIDE 35

35 direct direct forwarder

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)

slide-36
SLIDE 36

36 direct direct forwarder

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)

slide-37
SLIDE 37

37 direct direct forwarder

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)

slide-38
SLIDE 38

38 direct direct forwarder

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)

slide-39
SLIDE 39

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)
slide-40
SLIDE 40

40

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

slide-41
SLIDE 41

41 Body

Request Receiver Reply Receiver

Body

Request Receiver Reply Receiver Reply Sender Service

Object

RequestLine FuturePool Migration Manager

Caller

Forwarder

Migration

slide-42
SLIDE 42

42

Table of Contents

  • ProActive Runtime

ProActive Runtime ProActive Runtime

  • Active Objects Model

Active Objects Model Active Objects Model

  • Future Objects and Automatic Continuation

Future Objects and Automatic Continuation Future Objects and Automatic Continuation

  • Groups Communication

Groups Communication Groups Communication

  • Active Objects Migration

Active Objects Migration Active Objects Migration Abstract Deployment Model

  • Components Infrastructure

Components Infrastructure Components Infrastructure

  • Security

Security Security

slide-43
SLIDE 43

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

slide-44
SLIDE 44

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

slide-45
SLIDE 45

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

Definitions and mapping

Definition of Virtual Nodes Mapping of Virtual Nodes

Mapping Virtual Nodes: example

slide-46
SLIDE 46

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> </processDefinition>

Infrastructure informations

JVM on the current Host JVM started using RSH

slide-47
SLIDE 47

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

slide-48
SLIDE 48

48

Table of Contents

  • ProActive Runtime

ProActive Runtime ProActive Runtime

  • Active Objects Model

Active Objects Model Active Objects Model

  • Future Objects and Automatic Continuation

Future Objects and Automatic Continuation Future Objects and Automatic Continuation

  • Active Objects Migration

Active Objects Migration Active Objects Migration

  • Groups Communication

Groups Communication Groups Communication

  • Abstract Deployment Model

Abstract Deployment Model Abstract Deployment Model Components Infrastructure

  • Security

Security Security

slide-49
SLIDE 49

49

D C Components based on Fractal Model

slide-50
SLIDE 50

50

Distributed and Parallel Components

Group proxy

A B C D A A B C P

Group proxy

slide-51
SLIDE 51

51

a b body mobility asynchronism Stub_a proxy

JVM1 JVM2

component meta - objects component representative

Components Infrastructure

slide-52
SLIDE 52

52

Components Infrastructure

a b body mobility asynchronism proxy

JVM1 JVM2

component meta - objects component representative

slide-53
SLIDE 53

53

Components Request

a b body proxy component meta - objects component representative

method calls are reified

slide-54
SLIDE 54

54

Table of Contents

  • ProActive Runtime

ProActive Runtime ProActive Runtime

  • Active Objects Model

Active Objects Model Active Objects Model

  • Future Objects and Automatic Continuation

Future Objects and Automatic Continuation Future Objects and Automatic Continuation

  • Active Objects Migration

Active Objects Migration Active Objects Migration

  • Groups Communication

Groups Communication Groups Communication

  • Abstract Deployment Model

Abstract Deployment Model Abstract Deployment Model

  • Components Infrastructure

Components Infrastructure Components Infrastructure Security

slide-55
SLIDE 55

55

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

slide-56
SLIDE 56

56

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 Request Sender

  • Policy computation
  • Keys exchange

Request path Security mechanims encrypt decrypt