Dynamic Layout of Distributed Applications in FarGoOverviewMotivationWhat do we need?FarGoProgramming ModelProgramming Model (2)…Semantics of intra and inter complet referencesComplet reference typesSlide 10Slide 11Slide 12Slide 13TODO ApplicationMonitoring facility in FarGoLayout Programming in FarGoLayout API (1)Layout API (2)High-level Scripting languageHigh-level Scripting Language (2)FarGo Graphical MonitorImplementationHow does FarGo differ from Aglets, Voyager?People and RolesRelated linksExample ApplicationsPowerPoint PresentationSlide 28Dynamic Layout of Distributed Applications in FarGoOphir HolderIsrael Ben-ShaulHovav Gazit1999OverviewMotivationFarGoProgramming modelTODO ApplicationLayout Programming in FarGoImplementationStrengths, weaknesses and relevance to embedded systemsReferencesMotivationGrowing adoption of large scale networking infrastructureLarge deployment spaceConstantly changing environmentsNeed for scalabilityWhat do we need?Distributed programming model that provides a dynamic layout capability without compromising on explicit programmability of the layout and yet retains as much as the local programming language.FarGoExtension of JavaSeparation between programming application logic and programming application layout.Provides extensive dynamic layout capabilityProgramming model to specify co-location relationshipsMonitoring serviceProgramming ModelCompletsBasic building blockCollection of local objectsMinimal unit of relocationComplet referencesConnection between completsSet of complet references define relationships between completsControls layout of applicationsCore objectsMake up the light runtime infrastructureProvide system supportProgramming Model (2)…AnchorObject whose interface is the interface of the completComplet ClosureDefined by the reachability graph of objects and references starting from the anchor except complet referencesSemantics of intra and inter complet referencesDeals with relocatability and cross address-space operationWithin a complet All objects -> by local referenceAcross complets Regular objects -> by valueAnchor objects -> by complet referenceComplet reference typesLink()Basic complet reference from to with no constraints on co/re-location semanticsCo-location: and may or may not be co-locatedRe-location: relocation of does not affect the location of and vice versaUsed when no layout programming is usedComplet reference typesPull()Ensures co and re-location between completCo-location: and are co-locatedRe-location: If relocates, moves to the locality of can be referenced by at most one Pull referenceIt is transitiveUseful when the two complets need to interact frequently and/or require heavy data-transfer on each interaction yet they cannot be programmed inside a single completComplet reference typesDuplicate( )Ensures co and re-location between complet with a copy of Co-location: and are co-locatedRe-location: If relocates, a copy of moves to the locality of Useful when target complet can be easily replicated without violating logical semantics of the applicationReplication can speed up performance and increase reliabilityComplet reference typesStamp()Ensures co-location between complet by using a local instance of target complet typeCo-location: and some instance of ’s typeare co-locatedRe-location: If relocates, an instance of ’s typeis located in ’s new locality and gets attached to itInstance of ’s type is free to move regardless of Used for facilitating a constant connection from a mobile complet to a non-mobile completComplet reference typesBi-directional Pull()Ensures co-location between completCo-location: and are co-locatedRe-location: If relocates, moves to the locality of and vice versaMost powerful but expensive relocation referenceEffectively defines group re-location semanticsRequires a hidden back-reference from target to each of its sourcesTODO ApplicationA multi-user tool for management of a project’s to do listMonitoring facility in FarGoMonitor measures performance and resource consumptionNotifies application upon occurrence of eventsThis service (provided by core) can be used through –Layout (Monitoring) APIHigh-level scripting languageLayout Programming in FarGoThe three layers : Layout API High-level Scripting languageGraphical tool for Layout ManagementLayout API (1)Application can ask monitor to perform measurementsProvides means to register for eventsSimple distributed extension of standard Java event modelLayout API (2)Provides for means to interact with core and its services.Movement of CompletsManipulation of RelocatorsInteraction with Naming serviceInteraction with Monitor serviceHigh-level Scripting languageFor (dynamically) embedding relocation scripts to the applicationScripts are written in event-action styleOn event [at core] do actionsE.g. completArrival(complet, sourceCore)High-level Scripting Language(2)FarGo Graphical MonitorVisualizes state of FarGo applicationused by an administrator to view and manipulate the layout of applications using easy point-and-click operations.ImplementationHow does FarGo differ from Aglets, Voyager?Aglets do not support trackingAglets do not communicate using simple Java invocationsRelocation policy tightly integrated with application logicFargo has internal monitoring and profiling servicePeople and RolesDr. Issy Ben-Shaul - Head of researchOphir Holder (Ph.D. Candidate) - Chief architect and project leader- Runtime environment- FarGo Shell- Examples and documentation Hovav Gazit (M.Sc. Student) - Monitoring and profiling service- FarGo Compiler v0.1- Significant contribution to the overall design. Boris Lavva (Research Staff) - FarGo demonstration for ICSE'99- FarGo's website design and maintenance- Extensive technical helpRelated linksThe FarGo Toolkit is available from this website: http://www.dsg.technion.ac.il/fargo/ Also includes FarGo toolkit documentation and FarGo programming guideGeneral mobility bibliography
View Full Document