Adaptable Mirroring in Cluster Servers
MetadataShow full item record
This paper presents a software architecture for continuously mirroring streaming data received by one node of a cluster-based server system to other cluster nodes. The intent is to distribute the server loads implied by the data's processing and distribution to large numbers of clients. This is particularly important when a server performs multiple processing tasks, some of which may heavily depend on current system status. One specific example is the preparation of suitable initialization state for thin clients, so that such clients can understand future data events being streamed to them. In particular, when large numbers of thin clients must be initialized at the same time, such initialization must be performed without jeopardizing the quality of service offered to regular clients continuing to receive data streams. The mirroring framework presented and evaluated here has several novel aspects. First, by performing mirroring at the middleware level, application semantics may be used to reduce mirroring traffic: by event filtering based on data type or even data content, by coalescing certain events, or by simply varying mirroring rates according to current application needs concerning the consistencies of mirrored vs. original data. The intent of such dynamically varied mirroring is to improve server scalability, both with respect to its ability to stream data events to a large number of clients and to deal with large and highly variable request volumes from clients that require other services, such as new initial states computed from incoming data events. Second, this paper presents an adaptive algorithm that varies mirror consistency and thereby, mirroring overheads in response to changes in clients' request behavior. The third, novel aspect of this work is the framework's ability to not only mirror events, but to also mirror the new states computed from incoming events, thus enabling dynamic tradeoffs in communication vs. computation loads imposed on the server node receiving events and on its mirror nodes. This framework capability is used for adaptive event coalescing in response to increases or decreases in client request loads. Fourth, mirroring functionality is structured so that it is easily 'split' across nodes' main CPUs and the CoProcessors resident on their programmable network interfaces (should such interfaces exist). A case study of a mirroring design for an Intel I2O-based interface board using an i960 RD CoProcessor is also presented in this paper.