|
|
|
Carlos Varela, cvarela@cs.rpi.edu |
|
Abe Stephens, stepha@cs.rpi.edu |
|
Department of Computer Science |
|
Rensselaer Polytechnic Institute |
|
Troy NY, USA |
|
http://www.cs.rpi.edu/wwc/SALSA/ |
|
|
|
AAMAS 2002, University of Bologna Italy. |
|
|
|
|
Introduced by C. Hewitt (77), further refined
and developed by G. Agha et al (85-present) |
|
An Actor encapsulates a thread of execution with
a collection of objects. |
|
Only the actor’s thread may access its objects
directly and change their state. |
|
Provides for implicit object synchronization. |
|
|
|
|
Actors communicate by sending messages to each
other. |
|
Messages are sent asynchronously. |
|
Messages are not necessarily processed in the
order they are sent or received. |
|
|
|
|
|
Distributed computing over the Internet. |
|
Access to large number of processors offsets
slow communication and reliability issues. |
|
Seeks to create a platform for many
applications. |
|
|
|
|
Worldwide Computing platform implementation. |
|
Provides a runtime middleware for actors. |
|
Includes support for naming services. |
|
Message sending protocol. |
|
Support for actor migration. |
|
|
|
|
|
|
Messages between actors are sent using RMSP. |
|
RMSP is implemented using Java Object
Serialization. |
|
Protocol used for both message sending and actor
migration. |
|
When an actor migrates, its location changes but
its name does not. |
|
|
|
|
|
Theater programs provide execution location for
actors. |
|
Provide a layer beneath actors for message
passing. |
|
Example location: |
|
rmsp://wwc.cs.rpi.edu/calendarInstance10 |
|
|
|
|
|
|
Theaters may provide environmental actors. |
|
Perform actions specific to the theater and are
not mobile. |
|
Include standard input and standard output
actors. |
|
|
|
|
Consists of human readable names. |
|
Provides location transparency to actors. |
|
Name to location mappings efficiently updated as
actors migrate. |
|
|
|
|
|
|
UAN servers provide mapping between static names
and dynamic locations. |
|
Example: |
|
uan://wwc.cs.rpi.edu/stepha/calendar |
|
|
|
|
|
|
Universal Actors extend the actor model by
associating a location and a universal name with the actor. |
|
Universal Actors may migrate between theaters
and update the name server. |
|
|
|
|
|
|
SALSA is an actor oriented programming language. |
|
Supports Universal Naming (UAN & UAL). |
|
Primitives for |
|
Message sending. |
|
Migration. |
|
Coordination. |
|
Closely tied to WWC platform. |
|
|
|
|
|
|
Programmers define behaviors for actors. |
|
Messages are sent asynchronously. |
|
Messages are modeled as potential method
invocations. |
|
Continuation primitives are used for
coordination. |
|
|
|
|
|
|
|
|
|
|
|
TravelAgent a = new TravelAgent(); |
|
|
|
a<-book( flight ); |
|
|
|
|
|
Obtain a remote actor reference by name. |
|
TravelAgent a = new TravelAgent(); |
|
a<-getReferenceByName(“uan://myhost/ta”) @ |
|
a<-printItinerary(); |
|
Obtain a remote actor reference by location. |
|
a<-getReferenceByLocation(“rmsp://myhost/agent1”)
@ |
|
a<-printItinerary(); |
|
|
|
|
|
|
Creating a new Actor an migrating it to a remote
theater. |
|
TravelAgent a = new TravelAgent(); |
|
|
|
a<-bind( “uan://myhost/ta”,
“rmsp://myhost/agent1” ) @ |
|
a<-book( flight ); |
|
Obtaining a remote actor reference and migrating
it. |
|
a<-getReferenceByName(“uan://myhost/ta”)
@ |
|
a<-migrate( “rmsp://yourhost/travel”
) @ |
|
a<-printItinerary(); |
|
|
|
|
|
|
Insures that each message in the expression is
sent after the previous message has been processed. It also allows that the
return value of one message invocation may be used as an argument for a
later invocation in the expression. |
|
Example: |
|
a1<-m1() @ a2<-m2( token ); |
|
Send m1 to a1 and then after m1 finishes, send
the result with m2 to a2. |
|
|
|
|
|
|
Provides a mechanism for synchronizing the
processing of a set of messages. |
|
Set of results is sent along as a token. |
|
Example: |
|
Actor[] actors = { searcher0, searcher1, searcher2, searcher3
}; |
|
join( actors<-find( phrase ) ) @ |
|
resultActor<-output( token ); |
|
Send the find( phrase ) message to each actor in
actors[] then after all have completed send the result to resultActor with
an output( … ) message. |
|
|
|
|
|
|
join( a1<-m1(), a2<-m2, a3<-m3(), … ) @ |
|
cust<-n(token); |
|
|
|
|
|
Enable actors to delegate computation of a third
party independently of the processing context. |
|
Unimplemented in current release. |
|
|
|
|
SALSA source files are compiled into Java source
files before being compiled into Java byte code. |
|
SALSA programs may take full advantage of Java
API. |
|
|
|
|
|
module demo; |
|
|
|
behavior HelloWorld { |
|
|
|
void
act( String[] argv ) { |
|
|
|
standardOutput<-print( "Hello" ) @ |
|
standardOutput<-print( "World!" ); |
|
|
|
} |
|
|
|
} |
|
|
|
|
The act( String[] args ) message handler is
similar to the main(…) method in Java and is used to bootstrap SALSA
programs. |
|
|
|
|
|
|
|
The program must be bound to a valid name and
location. |
|
After binding the actor sends the print message
to itself before migrating to the second theater and sending the message
again. |
|
|
|
|
Compile Migrate.SALSA file into Migrate.java. |
|
Compile Migrate.java file into Migrate.class. |
|
Execute Migrate |
|
|
|
|
|
|
DataSource actor assigns tasks to Worker actors. |
|
Worker actors on remote theaters calculate
result and send it to a Supervisor actor. |
|
Coordinates between many Worker actors. |
|
|
|
|
|
Manager actor multicasts search queries between
distributed Indexer actors. |
|
Mobile Indexer actors create word lists from web
sites. |
|