Identity-based casting of network addresses
First Claim
1. A computer-implemented method for identifying a server to a client, comprising:
- storing, at an allocation server, a first set of server identification data for a plurality of content servers associated with a domain name, the plurality of content servers including at least a first content server and a second content server, wherein the allocation server is configured to store server identification data for multiple pluralities of content servers, each plurality of content servers associated with a different domain name;
receiving, at the allocation server, a first request to access one of the plurality of content servers associated with the domain name from a first client device, the first request including an identifier of the first client device;
receiving, at the allocation server, a second request to access one of the plurality of content servers associated with the domain name from a second client device, the second request including an identifier of the second client device;
selecting the first content server to process the first request, wherein the first content server is selected based on at least the identifier of the first client device and the domain name, and the proximity of a location of a hash value for the first client device on a circle to a location of a hash value for the first content server on the circle, and wherein the location of the hash value for the first client device and the location of the hash value for the first content server on the circle are determined by normalizing the hash value of the first client device and the hash value of the first content server to between 0 and 1;
selecting the second content server to process the second request, wherein the second content server is selected based on at least the identifier of the second client device and the domain name, and the proximity of a location of a hash value for the second client device on the circle to a location of a hash value for the second content server on the circle, and wherein the location of the hash value for the second client device and the location of the hash value for the second content server on the circle are determined by normalizing the hash value of the second client device and the hash value of the second content server to between 0 and 1;
providing the server identification data for the first content server to the first client device, wherein the first client device stores the server identification data for the first content server enabling the first client device to communicate with the first content server on subsequent requests to the plurality of content servers associated with the domain name while bypassing the allocation server; and
providing the server identification data for the second content server to the second client device, wherein the second client device stores the server identification data for the second content server enabling the second client device to communicate with the second content server on subsequent requests to the plurality of content servers associated with the domain name while bypassing the allocation server,wherein the first content server processes the subsequent requests of the first client device consistent with first state data stored at the first content server, the first state data corresponding to the first client device,wherein the second content server processes the subsequent requests of the second client device consistent with second state data stored at the second content server, the second state data corresponding to the second client device, andwherein the first state data includes information related to an interaction between the first client device and the first content server that occurred while processing the first request.
1 Assignment
0 Petitions
Accused Products
Abstract
Systems, methods, and computer-readable media identify a server to a client device. In one implementation, server identification data is stored for a plurality of servers associated with a service. An identifier of a client device is received. One of the plurality of servers is selected to provide the service to the client device, and the server is selected based on the identifier of the client device. The server identification data for the selected server is provided to the client device. The selected server may receive a request to access the service from the client device, and may process the request consistent with state data stored at the selected server.
25 Citations
21 Claims
-
1. A computer-implemented method for identifying a server to a client, comprising:
-
storing, at an allocation server, a first set of server identification data for a plurality of content servers associated with a domain name, the plurality of content servers including at least a first content server and a second content server, wherein the allocation server is configured to store server identification data for multiple pluralities of content servers, each plurality of content servers associated with a different domain name; receiving, at the allocation server, a first request to access one of the plurality of content servers associated with the domain name from a first client device, the first request including an identifier of the first client device; receiving, at the allocation server, a second request to access one of the plurality of content servers associated with the domain name from a second client device, the second request including an identifier of the second client device; selecting the first content server to process the first request, wherein the first content server is selected based on at least the identifier of the first client device and the domain name, and the proximity of a location of a hash value for the first client device on a circle to a location of a hash value for the first content server on the circle, and wherein the location of the hash value for the first client device and the location of the hash value for the first content server on the circle are determined by normalizing the hash value of the first client device and the hash value of the first content server to between 0 and 1; selecting the second content server to process the second request, wherein the second content server is selected based on at least the identifier of the second client device and the domain name, and the proximity of a location of a hash value for the second client device on the circle to a location of a hash value for the second content server on the circle, and wherein the location of the hash value for the second client device and the location of the hash value for the second content server on the circle are determined by normalizing the hash value of the second client device and the hash value of the second content server to between 0 and 1; providing the server identification data for the first content server to the first client device, wherein the first client device stores the server identification data for the first content server enabling the first client device to communicate with the first content server on subsequent requests to the plurality of content servers associated with the domain name while bypassing the allocation server; and providing the server identification data for the second content server to the second client device, wherein the second client device stores the server identification data for the second content server enabling the second client device to communicate with the second content server on subsequent requests to the plurality of content servers associated with the domain name while bypassing the allocation server, wherein the first content server processes the subsequent requests of the first client device consistent with first state data stored at the first content server, the first state data corresponding to the first client device, wherein the second content server processes the subsequent requests of the second client device consistent with second state data stored at the second content server, the second state data corresponding to the second client device, and wherein the first state data includes information related to an interaction between the first client device and the first content server that occurred while processing the first request. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A computer-implemented method for identifying a server, comprising:
-
storing, at an allocation server, a first set of server identification data for a plurality of content servers associated with a service, wherein the allocation server is configured to store server identification data for multiple pluralities of content servers, each plurality of content servers associated with a different service; receiving an identifier of a client device; selecting one of the plurality of content servers to provide the service to the client device in response to receiving the identifier, wherein the content server is selected based on at least the identifier of the client device, and the proximity of a location of a hash value for the client device on a circle to a location of a hash value for the selected content server on the circle, and wherein the location of the hash value for the client device and the location of the hash value for the selected content server on the circle are determined by normalizing the hash value of the client device and the hash value of the selected content server to between 0 and 1; and providing the server identification data for the selected content server to the client device, enabling the client device to store the server identification data for the selected content server and to communicate with the selected content server on subsequent requests to access the service without accessing the allocation server during the subsequent requests, wherein the selected content server receives a request to access the service from the client device, and stores state data at the selected content server, wherein the state data includes information related to an interaction between the client device and the selected content server, and wherein the selected content server processes the subsequent requests consistent with the state data. - View Dependent Claims (8, 9, 10, 11, 12, 13, 14, 15)
-
-
16. A system comprising:
-
a processor for executing program instructions; and a non-transitory computer-readable storage medium storing the program instructions, the program instructions, when executed by the processor, performing a process to; store a first set of server identification data for a first plurality of servers associated with a first service; store a second set of server identification data for a second plurality of servers associated with a second service; receive an identifier of a client device and an identifier of a service, wherein the identifier of the service identifies one of the first service and the second service; determine a requested service based, at least in part, on the received identifier of the service; select one of a plurality of servers to provide the requested service to the client device, wherein the server is selected based at least on the identifier of the client device and the identifier of the service, and the proximity of a location of a hash value for the client device on a circle to a location of a hash value for the selected server on the circle, and wherein the location of the hash value for the client device and the location of the hash value for the selected server on the circle are determined by normalizing the hash value of the client device and the hash value of the selected server to between 0 and 1; and provide the server identification data for the selected server to the client device enabling the client device to store the server identification data for the selected server and to communicate with the selected server on subsequent requests to access the service without accessing the system during the subsequent requests, wherein the selected server receives a request to access the requested service from the client device, and stores state data at the selected server, wherein the state data includes information related to an interaction between the client device and the selected server that occurred prior to processing the request, and wherein the selected server processes the subsequent requests consistent with the state data.
-
-
17. A non-transitory computer-readable storage medium storing program instructions for performing a method executed by a processor, the method comprising steps performed by the processor of:
-
storing, at an allocation server, a first set of server identification data for a first plurality of servers associated with a first service; storing, at the allocation server, a second set of server identification data for a second plurality of servers associated with a second service; receiving, at the allocation server, a request to access the first service and an identifier of a client device; selecting, based on the request to access the first service, one of the first plurality of servers to provide the service to the client device, wherein the server is selected based on at least the identifier of the client device, and the proximity of a location of a hash value for the client device on a circle to a location of a hash value for the selected server on the circle, and wherein the location of the hash value for the client device and the location of the hash value for the selected server on the circle are determined by normalizing the hash value of the client device and the hash value of the selected server to between 0 and 1; and providing the server identification data for the selected server to the client device, enabling the client device to store the server identification data for the selected server and to communicate with the selected server on subsequent requests to access the service without accessing the allocation server during the subsequent requests, wherein the selected server receives a request to access the service from the client device, and stores state data at the selected server, wherein the state data includes information related to an interaction between the client device and the selected server, and wherein the selected server processes the subsequent requests consistent with the state data.
-
-
18. A client device comprising:
-
a processor for executing program instructions; and a non-transitory computer-readable storage medium storing the program instructions, the program instructions, when executed by the processor, performing a process to request a service comprising; transmitting a domain name to a first server, the first server comprising a domain name system (“
DNS”
) server;receiving, from the DNS server, identification data of a second server, the second server comprising an allocation server; transmitting identification data of the client device to the allocation server, the allocation server configured to store server identification data for multiple pluralities of content servers, each plurality of content servers associated with a different service; receiving, from the allocation server, identification data of a third server, the third server comprising a content server from the plurality of content servers associated with the service, wherein the third server is determined based at least in part on the proximity of a location of a hash value for the client device on a circle to a location of a hash value for the third server on the circle, and wherein the location of the hash value for the client device and the location of the hash value for the third server on the circle are determined by normalizing the hash value of the client device and the hash value of the third server to between 0 and 1; requesting the service from the content server, wherein the content server is configured to store state data related to an interaction between the client device and the content server; and sending a subsequent request to the content server without accessing the allocation server during the subsequent request, wherein the content server is further configured to process the subsequent request consistent with the state data. - View Dependent Claims (19, 20, 21)
-
Specification