Network architecture with load balancing, fault tolerance and distributed querying
First Claim
1. A system for responding to requests for data from a client device, the system comprising:
- a front-end server configured to;
receive a request for data from a client;
identify a data set to be retrieved, wherein the identified data set comprises stored data that corresponds to the requested data;
identify a plurality of slices of data to be retrieved, wherein each identified slice of data to be retrieved comprises a complete uncompromised segment of the identified data set that can be used to provide a statistically valid response to the request for data such that the front-end server is capable of generating a statistically valid response to the request upon receiving data corresponding to less than all of the plurality of slices of data identified;
generate a plurality of sub-requests, wherein each of the plurality of sub-requests corresponds to an identified slice of data to be retrieved;
communicate the plurality of sub-requests to one or more of a plurality of back-end servers;
receive data corresponding to less than all of the plurality of slices of data identified; and
generate, in response to receiving data corresponding to less than all of the plurality of slices of data identified, a statistically valid response to the request for data, wherein to generate the statistically valid response, the front-end server is further configured to scale the data received to account for data that is not received;
wherein each respective back-end server is configured to;
receive one or more of the plurality of sub-requests from the first front-end server;
load, from a database, a portion of the stored data corresponding to the identified slice of data to be retrieved that corresponds to the one or more sub-requests received at the respective back-end server; and
transmit, to the front-end server, data corresponding to the identified slice of data loaded from the database; and
wherein the database comprises the stored data, wherein the database is configured to communicate, to each respective back-end server, a portion of the stored data corresponding to the identified slice of data to be retrieved that corresponds to the one or more sub-requests received at the respective back-end server.
5 Assignments
0 Petitions
Accused Products
Abstract
A network architecture with load balancing, fault tolerance and distributed querying comprises a plurality of front-end servers, a plurality of back-end servers, and a database. The front-end servers are coupled to a network to receive data requests from client devices. The front-end servers are each coupled to the plurality of back-end servers. The front-end servers handle data requests at a macro level and divide the request into sub-requests that are sent to the plurality of back-end servers. The back-end servers are coupled to the database to retrieve data. Each data request is distributed across the plurality of back-end servers according to workload. The front-end servers are fault tolerant in that they can respond to a request for data without all of the back-end servers being responsive or providing data. The present invention also includes a plurality of methods including: a method for distributed querying, a method for loading data sets from a database, and a method for responding to a query that provides fault tolerance.
-
Citations
26 Claims
-
1. A system for responding to requests for data from a client device, the system comprising:
- a front-end server configured to;
receive a request for data from a client;
identify a data set to be retrieved, wherein the identified data set comprises stored data that corresponds to the requested data;
identify a plurality of slices of data to be retrieved, wherein each identified slice of data to be retrieved comprises a complete uncompromised segment of the identified data set that can be used to provide a statistically valid response to the request for data such that the front-end server is capable of generating a statistically valid response to the request upon receiving data corresponding to less than all of the plurality of slices of data identified;
generate a plurality of sub-requests, wherein each of the plurality of sub-requests corresponds to an identified slice of data to be retrieved;
communicate the plurality of sub-requests to one or more of a plurality of back-end servers;
receive data corresponding to less than all of the plurality of slices of data identified; and
generate, in response to receiving data corresponding to less than all of the plurality of slices of data identified, a statistically valid response to the request for data, wherein to generate the statistically valid response, the front-end server is further configured to scale the data received to account for data that is not received;
wherein each respective back-end server is configured to;
receive one or more of the plurality of sub-requests from the first front-end server;
load, from a database, a portion of the stored data corresponding to the identified slice of data to be retrieved that corresponds to the one or more sub-requests received at the respective back-end server; and
transmit, to the front-end server, data corresponding to the identified slice of data loaded from the database; and
wherein the database comprises the stored data, wherein the database is configured to communicate, to each respective back-end server, a portion of the stored data corresponding to the identified slice of data to be retrieved that corresponds to the one or more sub-requests received at the respective back-end server. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
- a front-end server configured to;
-
10. A method for accessing a web analytics system and responding to a query, the method comprising the steps of:
- assigning a visitor to one of a plurality of front-end servers;
receiving a query for data from the visitor;
identifying a data set to be retrieved, wherein the identified data set comprises stored data that corresponds to the queried data;
identifying a plurality of slices of data to be retrieved, wherein each identified slice of data to be retrieved is a complete uncompromised segment of the identified data set that can be used to provide a statistically valid response to the query for data such that the front-end server is capable of generating a statistically valid response to the query upon receiving data corresponding to less than all of the plurality of slices of data identified;
generating a plurality of sub-requests, wherein each of the plurality of sub-requests corresponds to an identified slice of data to be retrieved;
communicating the plurality of sub-requests to one or more of a plurality of back-end servers;
wherein each respective back-end server is configured to;
receive one or more of the plurality of sub-requests from the first front-end server;
retrieve, from a database, a portion of the stored data corresponding to the identified slice of data to be retrieved that corresponds to the one or more sub-requests received at the respective back-end server; and
notify the front-end server that the portion of the stored data is loaded into the respective back-end server;
receiving, from the plurality of back-end servers, data corresponding to less than all of the plurality of slices of data identified;
generating, in response to receiving data corresponding to less than all of the plurality of slices of data identified, a statistically valid response to the request for data, wherein said generating the statistically valid response comprises scaling the data received to account for data that is not received; and
sending the statistically valid response as the response to the query. - View Dependent Claims (11, 12, 13)
- assigning a visitor to one of a plurality of front-end servers;
-
14. A method for loading a data set from a database to a plurality of back-end servers, the method comprising the steps of:
- identifying a data set to be retrieved corresponding to a visitor;
identifying a plurality of slices of data to be retrieved, wherein each identified slice of data to be retrieved is a complete uncompromised segment of the identified data set that can be used to provide a statistically valid response to a request for data such that a front-end server receiving data is capable of generating a statistically valid response to the request upon receiving data corresponding to less than all of the plurality of slices of data identified, and wherein a determination of statistical validity for the response depends on a size of the data set;
generating a request for a selected slice of the plurality of slices of data to be retrieved;
determining which of the plurality of back-end servers has the lowest load based on the load and availability for the plurality of back-end servers;
selecting a back-end sever determined to have the lowest load; and
sending the request to the selected back-end server. - View Dependent Claims (15, 16, 17, 18, 19, 20)
- identifying a data set to be retrieved corresponding to a visitor;
-
21. A method for responding to a query for data from a client, the method comprising the steps of:
- receiving at a front-end server a query from a visitor, the visitor corresponding to a data set;
identifying a data set to be retrieved, wherein the identified data set comprises stored data that corresponds to the data set corresponding to the visitor;
identifying a plurality of slices of data to be retrieved, wherein each identified slice of data to be retrieved is a complete uncompromised segment of the identified data set to be retrieved that can be used to provide a statistically valid response to the request for data such that the front-end server is capable of generating a statistically valid response to the request upon receiving data corresponding to less than all of the plurality of slices of data identified, and wherein a determination of statistical validity for the response depends on a size of the data set;
generating by the front-end server a broadcast request for at least one of the plurality of slices of data to be retrieved, the broadcast request being sent to a plurality of back-end servers including at least a first back-end server, the broadcast request including a visitor identification number assigned to the visitor;
where at least one of the back-end severs is configured to;
receive the broadcast request;
determine whether the back-end server holds at least one of the plurality of slices of data to be retrieved;
perform, responsive to determining that the back-end server holds a slice of data to be retrieved, at least a portion of the query on the back-end server to generate result data including the data to be retrieved held by the back-end server; and
send the result data in association with the visitor identification number to the front-end server. - View Dependent Claims (22, 23, 24, 25, 26)
- receiving at a front-end server a query from a visitor, the visitor corresponding to a data set;
Specification