Dependency Isolation for Thread-based Multi-tier Internet Services

Report ID: 
Lingkun Chu, Kai Shen, Hong Tang, Tao Yang, and Jingyu Zhou
2003-10-01 05:00:00


Multi-tier Internet service clusters often contain complex calling dependenciesamong service components spreading across cluster nodes. Without proper handling, partial failure or overload at one component can cause cascading performance degradation in the entire system. While dependency management may not present significant challenges for even-driven services (particularly in the context of staged event-driven architecture), there is a lack of system support for thread-based online services to achieve dependency isolation automatically. To this end, we propose dependency capsule, a new mechanism that supports automatic recognition of dependency states and per-dependencymanagement for thread-based services. Our design employs a number of dependency capsules at each service node: one for each remote service component. Dependency capsules monitor and manage threads that block on supporting services and isolate their performance impact on the capsule host and the rest of the system. In addition to the failure and overload isolation, each capsule can also maintain dependency-specific feedback information to adjust control strategies for better availability and performance.In our implementation, dependency capsules are transparent to application-level services and clustering middleware, which is achieved by intercepting dependency-induced system calls. Additionally, we employ two-level thread management so that only light-weight user-level threads block in dependency capsules. Using four applications on two different clustering middlewareplatforms, we demonstrate the effectiveness of dependency capsules in improving service availability and throughput during component failures and overload.