Supporting Object Mobility Wouter Joosen, Frank Matthijs, Bert Robben, Eddy Truyen, Bart Vanhaute DistriNet Lab ~xenoops/CORRELATE
The Correlate project Testbed, experimental environment to study –Software system architecture –Language technology to support concurrency and distribution Correlate is … –a COOL –an execution environment based on a meta-level architecture and a meta-object protocol (MOP)
About this demo Focus : support of mobility in an open software architecture Problem domain : building flexible subsystems to support non-functional requirements in a distributed application, e.g. load balancing, fault tolerance, etc.
Typical applications Web server farm for high-availability in content management A simpler (more pedagogical) example: distributed simulation. Even with simple application logic, achieving performance, reliability, security is hard.
Key issue Separation of concerns –policy vs. mechanism
Overview of the demo session The object model of Correlate and demonstration of a simple application (simulation) The mobility mechanism and demonstration within the context of the simulation Policy objects and demo of the separation of concerns Discussion & implementation issues Future directions
1 Object Model Active objects –self contained –unit of concurrency –control over synchronization –autonomous behavior natural unit for migration
An example… active class SORWorkUnit { autonomous void step() precondition isReady() { … } public void deliver(Border msg) precondition isWaiting() { … } }
2 Meta-level architecture Metaprograms cope with non-functional requirements –fault-tolerance, distribution, performance, security,... Mastering complexity by separation of concerns Enabling mechanism: MOP
3 Mobility Requirements : –migrate state, ongoing computations and messages –use global references only (uid’s) The MOP: reification of –object state, object behavior and messages –object identity
The MOP m1 m2 activation o1o2 MOP request message start invoke
3 Policies for mobility Requirement : –Configuration of mobility system for specific applications Template + Policy : –Meta-program defines criteria –Instantiation according to application needs Roles (application programmer, subsystem programmer, system integrator)
An example Distributor { constructorproperty creation = BALANCED | LOCAL | CUSTOMIZED; objectproperty migration = NONE | BALANCED; objectproperty double getLoad() { return 1.0; } } Distributor SORWorkUnit { constructorproperty SORWorkUnit(...) { creation = BALANCED; } objectproperty migration = BALANCED; objectproperty double getLoad() { return x*y; } }
4 Discussion Java implementation Thread migration, serialization –active object = (state, identity, execution state) –byte-code rewriting Execution runtime –reification engine
5 Future directions Policies should glue between meta-program and application Meta-program becomes coordinator for several application concerns