Functionally homogeneous clustering: a framework for building scalable data-intensive internet services
Saito, Yasushi, 1967-
MetadataShow full item record
This dissertation proposes functionally homogeneous clustering (FHC), a new software architecture for building data-intensive Internet services that are manageable, available, fast, and inexpensive. FHC lets any node in the cluster manage any function and any piece of data, freeing humans from making specific decisions about the workload distribution. Its dynamic and self-regulative nature is the key to its scalability.This dissertation also presents three mechanisms that synergistically realize this architecture: automatic reconfiguration, high-throughput replication, and fine-grain load balancing. FHC offers an efficient and scalable automatic reconfiguration mechanism for redistributing functions and data after configuration change. It ensures that users can access all the data on live nodes after any number of failures. The replication mechanism stores important data on multiple disks with small overhead, while ensuring the consistency of their contents. The load balancing mechanism distributes incoming data evenly among nodes and masks the non-uniformity in the workloads and the cluster configuration.FHC scales without sacrificing its service quality by taking advantage of the semantics of data-intensive Internet services. For example, the name database used to locate on-disk data is stored only in memory and is recomputed after failure by scanning disks. While such a design makes the contents and operations of the name database application-specific, it makes the system fast and robust. Our replication algorithm also takes advantage of application semantics and ensures only eventual data consistency. In return, this strategy makes the system extremely resilient against failures.We develop the Porcupine email server as proof of the concept of functionally homogeneous clustering. Porcupine distributes user management and email message storage dynamically to maximize system throughput and ensure continuous service to all users. It replicates the user profile and email messages to ensure their availability. We evaluate the manageability, availability, and performance of Porcupine on a 30-node PC cluster. Through the evaluation, we show that Porcupine's performance indeed scales well and that it reacts to configuration changes gracefully and quickly. We also show that Porcupine's load balancing service efficiently utilizes heterogeneous hardware resources and handles non-uniform workloads by automatically discovering idle resources in the cluster.