Dynamic Reconfiguration of Distributed Applications
Abstract
Applications requiring concurrency or access to specialized hardware are
naturally written as distributed applications, where each software
component (module) can execute on a different machine, and modules
interact via bindings. In order to make changes to very long-running
applications or those that must be continuously availablet we must
dynamically change the application. Dynamic reconfiguration of a
distributed application is the act of changing the configuration of the
application as it executes. Examples of configuration changes are
replacing a module, moving a module to another machine, and adding or
removing modules from the application. The most challenging aspect of
dynamic reconfiguration is that an application in execution has state
information, both within the modules and within the communication channels
between modules. This state information may need to be transferred from
the old configuration to the new in order to reach an application state
compatible with the new configuration. Thus, in addition to requiring a
mechanism for changing the configuration during execution, dynamic
reconfiguration requires that modules be able to divulge and install state
information, and requires a mechanism for coordinating the communication
during recon figuration. Prior to this work, all systems supporting some
form of dynamic reconfiguration have given the application programmer no
support nor even guidelines for capturing and restoring an application's
state information. We have developed a machine-in dependent method for
installing this functionality in the application, given a set of
reconfiguration points designated by the programmer. This new technique
has been implemented as part of the general framework we have developed to
support dynamic reconf iguration of distributed applications. These
reconfiguration capabilities were implemented on top of existing operating
systems and compilers, requiring no modifications to either. They support
dynamic reconfiguration for applications composed of mixed languages,
communicating via message passing, running on a heterogeneous distributed
platform.
(Also cross-referenced as UMIACS-TR-94-8)