ProActive Architecture of an Open Middleware for the Grid

Slides:



Advertisements
Similar presentations
Elton Mathias and Jean Michael Legait 1 Elton Mathias, Jean Michael Legait, Denis Caromel, et al. OASIS Team INRIA -- CNRS - I3S -- Univ. of Nice Sophia-Antipolis,
Advertisements

26 Mai 2004 Séminaire Croisé : Sécurité Informatique Ubiquitaire1 Security Architecture for GRID Applications Séminaire Croisé Sécurité Informatique Ubiquitaire.
Denis Caromel1 Joint work with Ludovic Henrio – Eric Madelaine et. OASIS members OASIS Team INRIA -- CNRS - I3S – Univ. of Nice Sophia-Antipolis, IUF.
The road to reliable, autonomous distributed systems
Fabrice Huet Mobility of Active Objects Fabrice Huet INRIA-I3S-CNRS.
Denis Caromel, Arnaud Contes OASIS Team INRIA -- CNRS - I3S -- Univ. of Nice Sophia-Antipolis 1. Introduction to the GRID.
1 Ludovic Henrio Paris, An Open Source Middleware for the Grid Programming Wrapping Composing Deploying.
Remote Method Invocation Chin-Chih Chang. Java Remote Object Invocation In Java, the object is serialized before being passed as a parameter to an RMI.
Communication in Distributed Systems –Part 2
© DSRG 2001www.cs.agh.edu.pl Cross Grid Workshop - Kraków Krzysztof Zieliński, Sławomir Zieliński University of Mining and Metallurgy {kz,
Denis Caromel1 Institut universitaire de France (IUF) OASIS Team INRIA -- CNRS - I3S -- Univ. of Nice Sophia-Antipolis REUNA, Santiago, May 2004 GRID.
1 Secure Distributed Objects for Grid Applications Laurent Baduel, Arnaud Contes, Denis Caromel OASIS team ProActive
XML in Development of Distributed Systems Tooling Programming Runtime.
ANSTO E-Science workshop Romain Quilici University of Sydney CIMA CIMA Instrument Remote Control Instrument Remote Control Integration with GridSphere.
The Grid Component Model: an Overview “Proposal for a Grid Component Model” DPM02 “Basic Features of the Grid Component Model (assessed)” -- DPM04 CoreGrid.
1 22 August 2001 The Security Architecture of the M&M Mobile Agent Framework P. Marques, N. Santos, L. Silva, J. Silva CISUC, University of Coimbra, Portugal.
The Grid Component Model and its Implementation in ProActive CoreGrid Network of Excellence, Institute on Programming Models D.PM02 “Proposal for a Grid.
1 Update Strategies for First Class Futures Khan Muhammad, Ludovic Henrio INRIA, Univ. Nice Sophia Antipolis,CNRS.
Spring/2002 Distributed Software Engineering C:\unocourses\4350\slides\DefiningThreads 1 RMI.
Client Call Back Client Call Back is useful for multiple clients to keep up to date about changes on the server Example: One auction server and several.
RMI remote method invocation. Traditional network programming The client program sends data to the server in some intermediary format and the server has.
A High Performance Middleware in Java with a Real Application Fabrice Huet*, Denis Caromel*, Henri Bal + * Inria-I3S-CNRS, Sophia-Antipolis, France + Vrije.
1 Romain Quilici ObjectWeb Architecture meeting July 2nd 2003 ProActive Architecture of an Open Middleware for the Grid.
Denis Caromel1 Denis Caromel, Romain Quilici OASIS Team INRIA -- CNRS - I3S -- Univ. of Nice Sophia-Antipolis Albufeira,
Emil Salageanu ProActive Parallel Suite ActiveEon March 2008 ActiveEon Hands On Programming.
Grid programming with components: an advanced COMPonent platform for an effective invisible grid © 2006 GridCOMP Grids Programming with components. An.
Hwajung Lee.  Interprocess Communication (IPC) is at the heart of distributed computing.  Processes and Threads  Process is the execution of a program.
Denis Caromel 1 Denis Caromel, et al. OASIS Team INRIA -- CNRS - I3S -- Univ. of Nice Sophia-Antipolis, IUF Strong Programming.
ProActive components and legacy code Matthieu MOREL.
Denis Caromel1 Denis Caromel, et al. OASIS Team INRIA -- CNRS - I3S -- Univ. of Nice Sophia-Antipolis, IUF October
1 OASIS Team, INRIA Sophia-Antipolis/I3S CNRS, Univ. Nice Christian Delbé Data Grid Explorer 15/09/03 Large Scale Emulation Mobility in ProActive.
Institute for Visualization and Perception Research 1 © Copyright 1999 Haim Levkowitz Java-based mobile agents.
A Theory of Distributed Objects Toward a Foundation for Component Grid Platforms Ludovic HENRIO l A Theory of Distributed Objects l Components l Perspectives.
Mastère RSD - TC4 2005/20061 Distributed JAVA Aims and Principles The ProActive library Models of behaviours Generation of finite (parameterized) models.
1 Romain Quilici OASIS Team INRIA -- CNRS - I3S -- Univ. of Nice Sophia-Antipolis, IUF July 2nd 2003 ProActive Architecture.
2. CALCULUS: A S P. A Theory of Distributed Objects D. Caromel, L. Henrio, Springer 2005, Monograph A Calculus: ASP: Asynchronous Sequential Processes.
Denis Caromel1 Institut universitaire de France (IUF) OASIS Team INRIA -- CNRS - I3S -- Univ. of Nice Sophia-Antipolis JAOO, Cannes, May 2004 Programming,
© Oxford University Press 2011 DISTRIBUTED COMPUTING Sunita Mahajan Sunita Mahajan, Principal, Institute of Computer Science, MET League of Colleges, Mumbai.
Typed Group Communication & Object-Oriented SPMD Laurent Baduel.
Topic 4: Distributed Objects Dr. Ayman Srour Faculty of Applied Engineering and Urban Planning University of Palestine.
Tanenbaum & Van Steen, Distributed Systems: Principles and Paradigms, 2e, (c) 2007 Prentice-Hall, Inc. All rights reserved DISTRIBUTED SYSTEMS.
Distributed Web Systems Distributed Objects and Remote Method Invocation Lecturer Department University.
DISTRIBUTED SYSTEMS Principles and Paradigms Second Edition ANDREW S
Chapter 4 Remote Method Invocation
Chapter 5 Remote Procedure Call
Behavioural Models for Distributed Hierarchical Components
Distribution and components
Extending Java RMI for Dynamic Reconfiguration
Knowledge Byte In this section, you will learn about:
Programming Models for Distributed Application
Inventory of Distributed Computing Concepts and Web services
DISTRIBUTED SYSTEMS Principles and Paradigms Second Edition ANDREW S
DISTRIBUTED COMPUTING
Lecture 4: RPC Remote Procedure Call Coulouris et al: Chapter 5
Processes Chapter 3.
Lecture 4: RPC Remote Procedure Call CDK: Chapter 5
Bina Ramamurthy Chapter 9
Bina Ramamurthy Chapter 9
Bond-Jini Interoperability
Bina Ramamurthy Chapter 9
Distribution Infrastructures
Message Queuing.
Processes Chapter 3.
Processes Chapter 3.
Design Yaodong Bi.
Quality-aware Middleware
Java Remote Method Invocation
Distributed System using Web Services
The Grid Component Model and its Implementation in ProActive
ONAP Architecture Principle Review
Presentation transcript:

ProActive Architecture of an Open Middleware for the Grid Romain Quilici www.objectweb.org/ProActive ObjectWeb Architecture meeting July 2nd 2003

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)

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

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 ….

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

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

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)

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

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.»

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

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

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

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

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

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

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

Automatic Continuation Caller a b

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

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

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

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

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

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

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

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

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

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

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

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

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)

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)

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)

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

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

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

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

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

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

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)

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

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

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

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

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

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

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

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

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

Components based on Fractal Model

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

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

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

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

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

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

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