56
JavaSpaces JavaSpaces Prabhaker Mateti Wright State University

JavaSpaces Prabhaker Mateti Wright State University

Embed Size (px)

Citation preview

Page 1: JavaSpaces Prabhaker Mateti Wright State University

JavaSpacesJavaSpaces

Prabhaker MatetiWright State University

Page 2: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 2

AckAck

Ken ArnoldJan NewmarchSusanne HupferAnd many other sources on the

Web

Page 3: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 3

Page 4: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 4

public interface JavaSpacepublic interface JavaSpace

public interface JavaSpace {Lease write(Entry entry, Transaction txn, long lease); Entry read(Entry tmpl, Transaction txn, long timeout);Entry readIfExists(Entry tmpl, Transaction txn, long

timeout);Entry take(Entry tmpl, Transaction txn, long timeout);Entry takeIfExists(Entry tmpl, Transaction txn, long

timeout);EventRegistration notify(Entry tmpl, Transaction txn,

RemoteEventListener ln, long lease, MarshalledObject handback);

Entry snapshot(Entry e)}

// throws clauses not shown

Page 5: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 5

Page 6: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 6

MP3Request implements EntryMP3Request implements Entry

public class MP3Request implements Entry {public String channelName; // recipient of the request public Integer position; // position # of request in channel public String inputName; // file path public byte[] data; // content of the file public String from; // who sent the request public MP3Request() {} public MP3Request(String channelName) { this.channelName = channelName; } public MP3Request (String channelName, Integer position) {

this.channelName = channelName; this.position = position; } public MP3Request(String channelName, Integer position,

String inputName, byte[] data, String from) {this.channelName = channelName; this.position = position; this.inputName = inputName; this.data = data; this.from = from;

}}

Page 7: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 7

From Jini …From Jini …

import net.jini.transaction.*;import net jini.event.*;import net.jini.lease.*;

Page 8: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 8

JavaSpaces Technology basisJavaSpaces Technology basis

Built on core JDK facilities– RMI– Object serialization

Part of Sun’s Jini package– Leasing – Transaction– Distributed events

Page 9: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 9

JiniJini

JavaSpace Other

Lookup Service

Discovery/Join

Java RMI

… services …

Page 10: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 10

JavaSpace v. LindaJavaSpace v. Linda

write: put an entry in the space (out) read: return a matching entry from the

space (rd) take: remove a matching entry from

the space (in) notify: send event when a matching

entry is written (?) JavaSpace has No Linda eval()

Page 11: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 11

JavaSpaces architectureJavaSpaces architecture

Entry/TemplateSerializationJavaSpace Scenario JavaSpaces/JavaSpace serverJavaSpace Interface

Page 12: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 12

JavaSpace JavaSpace ServiceService

A simple service for distributed computing A shared object repository

– Persistent– Template-matching lookup– Transactions (multi-space)

Stores entries (tuples of objects)– Distributed (RMI-based)– Concurrent

What a JavaSpace service isn't– A relational database– An object oriented database

Page 13: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 13

Why Use a JavaSpace? Why Use a JavaSpace?

Cooperative, loosely-coupled systems scale well

Page 14: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 14

JavaSpaces SuitabilityJavaSpaces Suitability

JVM– All users should link to a JVM– use Java RMI– Transport among JVMs via JINI

Interoperability– interoperable with other language– via RMI/IIOP and CORBA

Page 15: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 15

JavaSapces Concepts: JavaSapces Concepts: A mechanism A mechanism for distributed computingfor distributed computing

dynamic sharing, communication and coordination of Java Objects

Loosely coupled, cooperative marketplace model– producer store objects in the space– consumer lookup and take objects from the space

100% pure Java language based

Page 16: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 16

JavaSapces Concepts: A networked JavaSapces Concepts: A networked repository for Java Objectsrepository for Java Objects

Store EntriesEntries (Serialized Java objects) Both data and behaviors Lookup entries by using TemplatesTemplates Type matching (same class?) Value matching: lookup and compare the specific fields

Page 17: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 17

Service ProviderService Provider

Implements the objects that provide a service

Finds the lookup services Registers the service object with

lookup services Service object gets downloaded

to clients A typical service object is a proxy

Page 18: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 18

A Service Provider ExampleA Service Provider Example

public class AServer implements DiscoveryListener { protected LeaseRenewalManager lm = new LeaseRenewalManager(); public static void main(String argv[]) { new AServer(); Thread.currentThread().sleep(Lease.FOREVER); } public AServer() { LookupDiscovery di = new LookupDiscovery(LookupDiscovery.ALL_GROUPS); di.addDiscoveryListener(this); } public void discovered(DiscoveryEvent evt) { ServiceRegistrar rg = evt.getRegistrars()[0]; ServiceItem item = new ServiceItem(null, new AServerImpl(), null); ServiceRegistration sr = rg.register(item, Lease.FOREVER); lm.renewUntil(sr.getLease(), Lease.FOREVER, this); }}

Page 19: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 19

Lookup ServicesLookup Services

Listening on port 4160 Unicast TCP; Multicast UDP Sends a registrar object to requestor Registering == storing a copy of the

service object in the lookup service

4160 == 0xCAFE – 0xBABE

Page 20: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 20

Entry ClassEntry Class

Implements interface: public interface Entry extends

java.io.serializable { }

All fields must be public Fields must be objects, not builtins

(no int, etc.) Must have a public null-arg

constructor

Page 21: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 21

An Example EntryAn Example Entry

class User implements Entry {public String login; public String homeHost; public String fullName; public Long lastLogin; // ...

}

Page 22: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 22

Entry MethodsEntry Methods

write -- put a copy of entry into the space read, readIfExists -- return a matching entry from the

space take, takeIfExists -- remove the matching entry from the

space notify -- send an event when the matching entry is

written snapshot -- return another entry object that contains the

snapshot of the original one

Page 23: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 23

Lease write (Entry e, Transaction t, Lease write (Entry e, Transaction t, long lease)long lease)

Write a copy of e into Spacereturns a Lease objectlimited persistence with time-outsexceptions

Page 24: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 24

Entry snapshot (Entry e)Entry snapshot (Entry e)

Returns an Entry object with a copy of the original unmodified object

Modification on the original entry will not affect snapshot

Works only within the same JavaSpaces Server where it is generated

Page 25: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 25

TemplateTemplate

Entry objectSome/all fields set to specific

valuesNull fields act as wildcards Exact value match of each non-null

field

Page 26: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 26

TemplateTemplate

Type matching and subtype matching

Only public fields are considered for matching

Fields should refer to serializable objects

Fields must have properties

Page 27: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 27

Entry MatchingEntry Matching

Matching requires a template The service is searched for one

entry that... Is at least the template's type Has all values matching

Page 28: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 28

Templates match entries iff …Templates match entries iff …

each field in template is either null or match the entry field via MarshalledObject.equals.

That is, the serialized forms of the objects match exactly.

Page 29: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 29

public Entry read (Entry e, Transaction t,public Entry read (Entry e, Transaction t,long timeout)long timeout)

A copy of the matching entry is returned.

read vs. readIfExists: read will wait until a match is found or until transaction settles, up to time out period

Null returned, if nothing matches

Page 30: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 30

Entry take(Entry tmpl, Transaction t, Entry take(Entry tmpl, Transaction t, long timeout)long timeout)

Matching object is removed from space

RemoteException: Entry may or may not be removed successfully

Other Exceptions mean failureSubtype matching: returns may be

more than anticipated

Page 31: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 31

SerializationSerialization

Entries are not stored in JavaSpaces Serialized form of the class and fields java.rmi.MarshalledObject MashalledObject.equals() Field in template has null value as wildcard set fields/un-set fields Object graph map reference

Page 32: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 32

notifynotify

EventRegistration notify(Entry tmplt, Transaction t, RemoteEventListener l, long lease, MarshalledObject handback) RemoteEvent

RemoteEventListener EventRegistraion{

evIDfromWhomseqNo

}

retry to notify listeners

Page 33: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 33

JaveSpaces ScenarioJaveSpaces Scenario

JavaSpacesJavaSpaces

RMIRMI

LeasingDistributed

Event

Transaction

Entry

Page 34: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 34

LeasingLeasing

Used in distributed environments to solve partial failure of resources and services

Resources are leased and freed when the time of the lease expires

Get rid off debris easilyNegotiation among related partiesLease can be renewed or canceled

Page 35: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 35

LeaseLease

“ a time period during which the grantor of the lease insures that the holder of the lease will have access to its resources.”

Typical Grantor: lookup serviceTypical Grantee: component

Page 36: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 36

package net.jini.core;package net.jini.core;

public interface Lease {void cancel()

throws

UnknownLeaseException,java.rmi.RemoteException; long getExpiration(); void renew(long duration) throws LeaseDeniedException, UnknownLeaseException, java.rmi.RemoteException;

}

Page 37: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 37

ACID properties of transactions ACID properties of transactions

Atomicity – All the operations of a transaction must take place,

or none of them do Consistency

– The completion of a transaction must leave the participants in a ``consistent'' state.

Isolation – The activities of one transaction must not affect any

other transactions Durability

– The results of a transaction must be persistent

Page 38: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 38

Two-phase commit protocolTwo-phase commit protocol

Participants tentatively carry out the operations.

All participants then vote. If all agree, the transaction commits. If any disagree, transaction aborts in all.

Page 39: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 39

Jini TransactionJini Transaction

Two phase commit model Transaction ID supplied by the manager Based on RMI for communication Dependent on Leasing Mahalo transaction manager is part of Jini

Page 40: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 40

Distributed EventDistributed Event

Events in multi-address spacesDesired delayNetwork failure/DelayThird-party agents perform

notificationNon-Java third-party agents

Page 41: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 41

Multiple JavaSpacesMultiple JavaSpaces

Multiple JavaSpaces cooperate, and transactions span multiple spaces.

Partitions provide minimal protection.

Page 42: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 42

Scale It UpScale It Up

Page 43: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 43

JavaSpaces is not aJavaSpaces is not a database database

All entries are copies of original objects No general query language No way to return sets of objects Not a transparent persistence

mechanism (can not modify data) Understand entry by type and serialized

fields

Page 44: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 44

Applications (Model)Applications (Model)

Identities

JavaSpaces server

JavaSpaces server

JavaSpaces server

Client

Client

EventCatcherTransaction

notify

notifywrite

take

write

writeEvent

write

read

Security

Check

proxy

notify

Page 45: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 45

An application scenario: Stock trading systemAn application scenario: Stock trading system

Entry fields:– securities, owners price offers, quantities, ...

GUI:– applets

Many sellers and buyers can beinvolved– concurrent accesses are handled

by the space

buyer

seller

JavaSpacesServer entry

Write

bid entry Write

Notify

Live feed applet

read

graphic applet

Page 46: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 46

ApplicationsApplications

Workflow systems Customer management systems Supply chain management Auction systems Trading service Agent systems Publish and subscribe service…...

Page 47: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 47

JavaSpaces ServerJavaSpaces Server

Not a remote interfaceinvocations of methods of

JavaSpace throw RemoteException JavaSpaces server exports objects

implementing javaspace interface to clients

Page 48: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 48

JavaSpace ServerJavaSpace Server

JavaSpace

JavaSpace

ServerInterface

JavaSpace ServerClient

Client

Page 49: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 49

Entry implementation ExampleEntry implementation Example

import net.jini.space.Entrypublic class MyEntry implements Entry {

public String name;public GIFImage value;public MyEntry(){

}}

Page 50: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 50

Sample implementationSample implementation

RequirementsEntry implementationSample invocation

Page 51: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 51

Sample invocationSample invocation

import net.jini.impl.outrigger.binders.RefHolderpublic class HelloWorld {

public JavaSpace getSpace() {RefHolder rh = (RefHolder)

Naming.lookup(“JavaSpace”);JavaSpace js = (JavaSpace) rh.proxy();

}}

Page 52: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 52

Sample invocationSample invocation

JavaSpace space = getSpace();MyEntry e = new MyEntry();e.name =“Duke”;e.value= new GIFImage

(“dukeWave.gif”);space.write(e, null, 60*60*1000);

Page 53: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 53

Supporting packagesSupporting packages

LeasingTransactionDistributed Event/Listener

Page 54: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 54

Third-party agentsThird-party agents

Obj1 Obj3

Obj2 Obj4

Server Server

Page 55: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 55

Jini lookup service: Jini lookup service: reggiereggie

Reggie is an activatable processIt just registers itself with rmidRmid activates it as necessary

Page 56: JavaSpaces Prabhaker Mateti Wright State University

Feb 2002 Mateti on "JavaSpace" 56