Abstract:
In component-based development, an application is composed of multiple
distributed components. Because components may be used in many different
contexts, and because they must process changing request patterns, component
performance is an important issue for component-based architectures.
In this talk we propose a mechanism whereby components offer multiple
implementations, each optimized for a particular request workload. The
component must also provide the mechanism for switching between
implementations. The underlying system will then monitor, at run-time,
the sorts of requests a particular component is currently receiving and
adaptively switch to an optimized implementation for that workload.
The performance of the resulting system is dependent upon making good
choices as to when to switch between implementations, which we call the
adaptive component problem. This talk formalizes the generic problem, and
describes the Delta algorithm, a 3-competitive algorithm for this problem.
We prove that no algorithm can do better against an adaptive off-line
adversary. We show the applicability of this framework to two example
problems: the distributed pub/sub problem, and the data structure selection
problem.