System and method for workload-aware request distribution in cluster-based network servers
First Claim
1. A server cluster having a plurality of nodes, the server cluster comprising:
- a set of base files, wherein said base files are a set of frequently accessed files fitting into a cluster memory of said server cluster, and wherein the base files are logically partitioned into a set of core files having a core size, a set of partitioned files having a partitioned size, and a set of on disk files, and wherein a total of the partitioned size added to the product of the number of said plurality of nodes multiplied by the core size is no greater than the cluster memory; and
wherein each node of said plurality of nodes comprises;
at least said set of core files stored locally thereto;
a distributor component for distributing a request to a specific node of said plurality of nodes;
a dispatcher component comprising routing information for said plurality of nodes and replicated across said plurality of nodes, wherein said routing information indicates which said node of said plurality of nodes is for processing said request, said dispatcher component coupled to said distributor component; and
a server component for processing said request, said server component coupled to said dispatcher component;
wherein said plurality of nodes are coupled to a network.
2 Assignments
0 Petitions
Accused Products
Abstract
A method and system for workload-aware request in cluster-based network servers. The present invention provides a web server cluster having a plurality of nodes wherein each node comprises a distributor component, a dispatcher component and a server component. In another embodiment, the present provides a method for managing request distribution to a set of files stored on a web server cluster. A request for a file is received at a first node of a plurality of nodes, each node comprising a distributor component, a dispatcher component and a server component. If the request is for a core file, the request is processed at the first node (e.g., processed locally). If the request is for a partitioned file, it is determined whether the request is assigned to be processed locally at the first node or at another node (e.g., processed remotely). If the request is for neither a core file nor a partitioned file, the request is processed at the first node. In one embodiment, the present invention provides a method for identifying a set of frequently accessed files on a server cluster comprising a number of nodes. Embodiments of the present invention operate to maximize the number of requests served from the total cluster memory of a web server cluster and to minimize the forwarding overhead and disk access overhead by identifying the subset of core files to be processed at any node and by identifying the subset of partitioned files to be processed by different nodes in the cluster.
-
Citations
18 Claims
-
1. A server cluster having a plurality of nodes, the server cluster comprising:
-
a set of base files, wherein said base files are a set of frequently accessed files fitting into a cluster memory of said server cluster, and wherein the base files are logically partitioned into a set of core files having a core size, a set of partitioned files having a partitioned size, and a set of on disk files, and wherein a total of the partitioned size added to the product of the number of said plurality of nodes multiplied by the core size is no greater than the cluster memory; and
wherein each node of said plurality of nodes comprises;at least said set of core files stored locally thereto; a distributor component for distributing a request to a specific node of said plurality of nodes; a dispatcher component comprising routing information for said plurality of nodes and replicated across said plurality of nodes, wherein said routing information indicates which said node of said plurality of nodes is for processing said request, said dispatcher component coupled to said distributor component; and a server component for processing said request, said server component coupled to said dispatcher component; wherein said plurality of nodes are coupled to a network. - View Dependent Claims (2, 3, 4, 5, 14, 15, 16, 17, 18)
-
-
6. A server cluster having a plurality of nodes, wherein each node of said plurality of nodes comprises:
-
a distributor component for distributing a request to a specific node of said plurality of nodes; a dispatcher component comprising routing information for said plurality of nodes and replicated across said plurality of nodes, wherein said routing information indicates which said node of said plurality of nodes is for processing said request, said dispatcher component coupled to said distributor component; a server component for processing said request, said server component coupled to said dispatcher component; wherein said plurality of nodes are coupled to a network, and wherein each of said plurality of nodes further comprises a set of core files and a set of partitioned files; and wherein said set of core files is identified by the steps of; a) logically partitioning said base files into a first subset of files having a first size, a second subset of files having a second size, and a third subset of files having a third size, wherein said base files comprising each of said first subset of files, said second subset of files, and said third subset of files are ordered in decreasing frequency of access; b) identifying said first subset of files and said second subset of files wherein the total of said second size added to the product of said number of nodes multiplied by said first is less than said cluster memory; and c) minimizing a total overhead due to the base files wherein said total overhead equals an overhead of said first subset of files plus an overhead of said second subset of files plus said overhead of said third subset of files.
-
-
7. A method for managing request distribution to a set of files stored on a server, said method comprising the steps of:
-
a) receiving a request for a file at a first node of a plurality of nodes, each of said nodes comprising a distributor component for distributing a request to a specific node of said plurality of nodes, a dispatcher component comprising routing information for said plurality of nodes and replicated across said plurality of nodes, and a server component for processing said request; b) provided said request is for a core file, processing said request at said first node; c) provided said request is for a partitioned file, determining whether said request is assigned to be processed by said first node; c1) provided said request is for a partitioned file assigned to be processed by said first node, processing said request at said first node; c2) provided said request is for a partitioned file assigned to be processed by another node of said plurality of nodes, forwarding said request to a specific node of said plurality of nodes as indicated by said dispatcher component of said first node and processing said request at said specific node; and d) provided said request is not for a said core file or a said partitioned file, processing said request at said first node; wherein each of said plurality of nodes further comprises a set of core files comprising said core file and a set of partitioned files comprising said partitioned file, and wherein said set of core files is identified by the steps of; a) logically partitioning said base files into said set of core files having a core size, said set of partitioned files having a partitioned size, and a set of on disk files having an on disk size, wherein said base files comprising each of said set of core files, said set of partitioned files, and said set of on disk files are ordered in decreasing frequency of access; b) identifying said set of core files and said set of partitioned files wherein the total of said partitioned size added to the product of number of said plurality of nodes multiplied by said core size is less than memory of said plurality of nodes; and c) minimizing a total overhead due to the base files wherein said total overhead equals an overhead of said core set of files plus an overhead of said partitioned set of files plus said overhead of said on disk set of files.
-
-
8. A method for identifying a set of frequently accessed files on a server cluster comprising a number of nodes, said method comprising the steps of:
-
a) defininga set of base files, wherein said base files are a set of frequently accessed files fitting into the cluster memory of said server cluster, said base files ordered in decreasing frequency of access; b) logically partitioning said base files into a first subset of files having a first size, a second subset of files having a second size, and a third subset of files having a third size, wherein said base files comprising each of said first subset of files, said second subset of files, and said third subset of files are ordered in decreasing frequency of access; c) identifying said first subset of files and said second subset of files wherein the total of said second size added to the product of said number of nodes multiplied by said first size is not greater than said cluster memory; and d) minimizing a total overhead due to the base files wherein said total overhead equals an overhead of said first subset of files plus an overhead of said second subset of files plus said overhead of said third subset of files. - View Dependent Claims (9, 10, 11, 12)
-
-
13. A method for determining a set of Filescore, said method comprising the steps of:
-
a) defining a set of BaseFiles as a set of frequently accessed files fitting into a ClusterRAM, said BaseFiles ordered in decreasing frequency of access; b) logically partitioning said BaseFiles into a Filespart, a Filescore and a Fileson disk wherein BaseFiles=Filespart+Filescore+Fileson disk; c) identifying said set Filespart and said set Filescore according to N∞
Sizecore+Sizepart≦
ClusterRAM; andd) minimizing OHBaseFiles according to OHBaseFiles=OHpart+OHcore+OHon disk.
-
Specification