WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Method, computer program product, and system for client-side deterministic routing and URL lookup into a distributed cache of URLS    
United States Patent6311216   
Link to this pagehttp://www.wikipatents.com/6311216.html
Inventor(s)Smith; Brian J. (Seattle, WA), Hurvig; Hans (Copenhagen, DK)
AbstractA method, computer program product, and system for directly accessing URL data object requests in a proxy server array. A URL data object request is generated by an enabled client to request a URL data object that resides in the local cache of proxy server in an array of proxy servers configured as a distributed cache. The enabled client will deterministically identify the residing proxy server based on information residing thereon without resorting to expensive query-response transactions, such as those that occur in proxy server arrays using ICP, or routing the URL data object request through different proxy servers of the array. An array membership list containing array membership information is available at each and every proxy server as well as all enabled clients. This list is used in conjunction with the URL as the information for identifying the correct proxy server where the URL data object resides. First, a deterministic hash value is computed for each proxy server name and the URL. Next, a combined hash value is computed that combines the URL hash value with each proxy server hash value. Finally, the proxy server with the highest "score" or combined hash value is identified as the proxy server where the desired URL data object should reside in local cache storage. Since the array membership list, the URL, and the hashing algorithm are the same at all enabled clients, the same proxy server will be identified as having the URL data object regardless of which enabled client generated the URL data object request.



 Title Information Submit all comments and votes
 
Patent Text Patent PDF Print Page Summary File History
Plain text PDF images Print Summary File History
Drawing from US Patent 6311216
Method, computer program product, and system for client-side deterministic
     routing and URL lookup into a distributed cache of URLS - US Patent 6311216 Drawing
Method, computer program product, and system for client-side deterministic routing and URL lookup into a distributed cache of URLS
Inventor     Smith; Brian J. (Seattle, WA) , Hurvig; Hans (Copenhagen, DK)
Owner/Assignee     Microsoft Corporation (Redmond, WA)
Patent assignment
All assignments
Publication Date     October 30, 2001
Application Number     09/086,843
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     May 29, 1998
US Classification     709/226 709/225 709/229
Int'l Classification    
Examiner     Burgess; Glenton B.
Assistant Examiner     Trim; Nkosi
Attorney/Law Firm     Workman, Nydegger & Seeley
Address
Parent Case    
Priority Data    
USPTO Field of Search     711/118 711/122 711/113 711/14 709/217 709/218 709/219 709/226 709/225 709/229 709/203 709/105
Patent Tags     method, computer program product, client-side deterministic routing url lookup into distributed cache urls
   
Enter a comma (,) or semicolon (;) between multiple tag words/phrases.
Describe this patent:
 Amusing   
 Clever   
 Complex   
 Efficient   
 Historic   
 Important   
 Innovative   
 Interesting   
 Practical   
 Simple   
[no votes]
Patent WIKI

Share information and news about this patent, including information and news about the technology, inventors, company, ligation and licensing.

 References Submit all comments and votes
 
*references marked with an asterisk below are user-added references
 U.S. References
 
Add a new US reference:  
ReferenceRelevancyCommentsReferenceRelevancyComments
6029195
Herz

Feb,2000

[0 after 0 votes]
6029168
Frey

Feb,2000

[0 after 0 votes]
6026405
Arda et al.

Feb,2000

[0 after 0 votes]
6014667
Jenkins et al.

Jan,2000

[0 after 0 votes]
6006251
Toyouchi et al.

Dec,1999

[0 after 0 votes]
6006264
Colby et al.

Dec,1999

[0 after 0 votes]
5991804
Bolosky et al.

Nov,1999

[0 after 0 votes]
5991809
Kriegsman

Nov,1999

[0 after 0 votes]
5987233
Humphrey

Nov,1999

[0 after 0 votes]
5933849
Srbljic et al.

Aug,1999

[0 after 0 votes]
5940594
Ali et al.

Aug,1999

[0 after 0 votes]
5935207
Logue et al.

Aug,1999

[0 after 0 votes]
5933606
Mayhew

Aug,1999

[0 after 0 votes]
5924116
Aggarwal et al.

Jul,1999

[0 after 0 votes]
5918013
Mighdoll et al.

Jun,1999

[0 after 0 votes]
5864852
Luotonen

Jan,1999

[0 after 0 votes]
5826270
Rutkowski et al.

Oct,1998

[0 after 0 votes]
5805824
Kappe

Sep,1998

[0 after 0 votes]
5787470
DiSimone et al.

Jul,1998

[0 after 0 votes]
5774660
Brendel et al.

Jun,1998

[0 after 0 votes]
5740371
Wallis

Apr,1998

[0 after 0 votes]
5649093
Hanko et al.

Jul,1997

[0 after 0 votes]
5623595
Bailey

Apr,1997

[0 after 0 votes]
5612865
Dasgupta

Mar,1997

[0 after 0 votes]
5603029
Aman et al.

Feb,1997

[0 after 0 votes]
5539883
Allon et al.

Jul,1996

[0 after 0 votes]
5341499
Doragh

Aug,1994

[0 after 0 votes]
 Foreign References
 Other References
 Market Review Submit all comments and votes
   
Market Size
Estimate the gross annual revenues of the relevant market sector:
> $10B
$5B - $10B
$2B - $5B
$500M - $2B
$100M - $500M
$10M - $100M
$1M - $10M
$500K - $1M
$100K - $500K
< $100K
[No votes]
$0
 
$0   $2.5B   $5B   $7.5B   $10B
Market Share
Estimate the percentage of the relevant market sector this invention will capture:
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Reasonable Royalty
What percentage of gross sales should the inventor or assignee be paid?
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Public's "Guesstimation" of Royalty Value
Market SizeN/A[No votes]
xMarket ShareN/A[No votes]
xReasonable RoyaltyN/A[No votes]

N/A

License Availablity
If you are NOT the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
License Availablity
If you ARE the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
Competitive Advantage
Does this invention have a significant competitive advantage over similar technologies?
Yes

No



[No votes]
Most helpful competitive advantage comment
[No comments]

Commercial Alternatives
Are there viable commercial alternatives for this invention?
Yes

No



[No votes]
Most helpful commercial alternative comment
[No comments]

 Technical Review Submit all comments and votes
 Claims Submit all comments and votes
 


What is claimed and desired to be secured by United States Letters Patent is:

1. In a client system associated with an array of servers configured so as to provide a distributed store of data objects, a method of transmitting a request for a data object to a single server of the array that is assigned to store the data object without sending queries to each server in the array to ascertain the location of the data object, the method comprising the acts of:

providing array membership information at the client system, the array membership information including information identifying each server that is active in the array at a given time;

providing, at the client system, information identifying a data object that is to be accessed by the client system;

determining which single server of the array is assigned to store the data object by performing the acts of:

performing a first deterministic function on the information identifying the data object;

for each server, performing a second deterministic function on the information identifying the server;

combining the results of the first deterministic function with the results of the second deterministic function to generate a value for each server; and

based on the relative values for the servers, deterministically identifying which single server is assigned to store the data object, without sending a query to each server to ascertain the location of the data object; and

transmitting an access request for the data object to the identified single server.

2. The method of claim 1 wherein the data objects are Uniform Resource Locator ("URL") data objects, the servers are proxy servers, the store of data objects is a cache of URL data objects, and the access request is a URL data object access request.

3. The method of claim 1 wherein the first deterministic function and the second deterministic function are deterministic hash functions.

4. The method of claim 3 wherein the act of deterministically identifying which single server is assigned to store the data object comprises the steps of:

ordering the servers based on the values for the servers; and

identifying the server having the highest value as being the server assigned to store the data object.

5. The method of claim 1 wherein the array membership information is contained in an array membership list that is distributed between the servers in the array and accessible to the client system.

6. The method of claim 5 wherein the step of providing array membership information at the client system comprises the acts of:

periodically requesting a new array membership list from a randomly chosen server that is listed in a current array membership list stored at the client system; and

updating the current array membership list with the new array membership list.

7. A computer-readable medium having computer-executable instructions for performing the steps recited in claim 1.

8. In a client system associated with an array of proxy servers configured so as to provide a cache of uniform resource locator ("URL") data objects distributed across the array of proxy servers, a method of transmitting a request for a URL data object to a single proxy server of the array that is assigned to store the URL data object, the method comprising the acts of:

providing an array membership list at the client system, the list including names of all proxy servers that is active in the array at a given time;

providing, at the client system, a URL identifying a URL data object that is to be accessed by the client system;

determining which single proxy server of the array is assigned to store the URL data object by performing the acts of:

for each of the proxy servers that are active in the array, computing a first deterministic hash value of the name of the proxy server;

computing a second deterministic hash value of the URL;

combining, for each of the proxy servers active in the array, the first deterministic hash value and the second deterministic hash value to generate a deterministic combined hash value associated with each of the proxy servers active in the array; and

based on the relative values of the deterministic combined hash values, deterministically identifying which single proxy server is assigned to store the URL data object; and

transmitting a URL access request for the URL data object to the identified single proxy server.

9. The method of claim 8 wherein the act of deterministically identifying which single proxy server is assigned to store the URL data object comprises the acts of:

ordering the proxy servers based on the values for the servers; and

identifying the proxy server having the highest deterministic combined hash value as being the single proxy server assigned to store the data object.

10. The method of claim 8 wherein each proxy server contains an array membership list and wherein the act of providing an array membership list at the client comprises the acts of:

periodically requesting a new array membership list from a randomly chosen proxy server that is listed in a current array membership list stored at the client system; and

updating the current array membership list with the new array membership list.

11. A computer-readable medium having computer-executable instructions for performing the steps recited in claim 8.

12. In a client system associated with an array of proxy servers configured so as to provide a cache of uniform resource locator ("URL") data objects distributed across the array of proxy servers, a method of transmitting a request for a URL data object to a single proxy server of the array that is assigned to store the URL data object, the method comprising the acts of:

providing an array membership list at the client system, the list including information identifying all proxy servers that are active in the array at a given time, the list being located on each proxy server of the array, said act of providing an array membership list comprising the acts of:

periodically requesting the array membership list located at a proxy server of the array; and

updating the array membership list at the client system using the requested array membership list;

in response to a URL request generated at the client system, determining which single proxy server is assigned to store a URL data object associated with the URL request without making a query to any of the proxy servers of the array, by performing the acts of:

for each of the proxy servers that are active in the array, computing a first deterministic hash value based on the information identifying the proxy server;

computing a second deterministic hash value of a URL associated with the URL request;

combining, for each of the proxy servers active in the array, the first deterministic hash value and the second deterministic hash value to generate a deterministic combined hash value for each of the proxy servers; and

based on the relative values of the deterministic combined hash values, deterministically identifying which single proxy server is assigned to store the URL data object; and

forwarding the URL request to the identified single proxy server.

13. A computer-readable medium having computer-executable instructions for performing the steps recited in claim 12.

14. A computer-readable medium having computer-executable components for routing a uniform resource locator ("URL") generated at a client system to a single proxy server that is assigned to store a URL data object associated with the URL request, the single proxy server being part an array of proxy servers configured so as to provide a distributed cache of URL data objects, the components comprising:

a request generating component for originating or forwarding a URL request that includes a URL associated with a URL data object that is to be accessed by the client system;

a proxy server identification component for deterministically identifying which single proxy server in the array is assigned to store the URL data object associated with the URL without sending queries to the all of the proxy servers in the array, including performing the acts of:

for each of the proxy servers that are active in the array, computing a first deterministic hash value of a name of the proxy server;

computing a second deterministic hash value of the URL;

combining, for each of the proxy servers active in the array, the first deterministic hash value and the second deterministic hash value to generate a deterministic combined hash value associated with each of the proxy servers active in the array; and

based on the relative values of the deterministic combined hash values, deterministically identifying which single proxy server is assigned to store the URL data object; and

a routing component to route the generated URL request to the identified single proxy server.

15. A system of server computers configured into a distributed cache for holding Uniform Resource Locator ("URL") data objects and client computers that access the distributed cache, wherein a URL request generated at a client computer can be routed directly to the server computer that is assigned to store the requested URL data object without queries being made to any other server computer, the system comprising:

at least two server computers, each server computer comprising:

a CPU;

storage means, electronically coupled and responsive to said CPU, said storage means containing membership information including information identifying all server computers included in the distributed cache;

means, electronically coupled and responsive to said CPU, for receiving URL requests from clients of the distributed cache; and

at least one client computer being a client of the distributed cache, said client computer comprising:

a CPU;

storage means, electronically coupled and responsive to said CPU, said storage means containing membership information including information identifying all server computers included in the distributed cache;

means, electronically coupled and responsive to said CPU, for generating a URL request;

means, electronically coupled and responsive to said CPU, for deterministically identifying which single server computer in the distributed cache is assigned to store a URL data object associated with the URL request by performing the acts of:

for each of the servers computers in the array, computing a first deterministic hash value of the information identifying the server computer;

computing a second deterministic hash value of a URL that is associated with the URL request;

combining, for each of the server computers, the first deterministic hash value and the second deterministic hash value to generate a deterministic combined hash value associated with each of the server computers; and

based on the relative values of the deterministic combined hash values, deterministically identifying which single server computer is assigned to store the URL data object; and

means, electronically coupled and responsive to said CPU, for routing the URL request to the identified single server computer.

16. A method as recited in claim 1, wherein the act of combining the results of the first deterministic function with the results of the second deterministic function to generate a value for each server comprises the act of using a third deterministic function selected so as to assign the data objects substantially evenly among the servers in the array.

17. A method as recited in claim 1, wherein the act of combining the results of the first deterministic function with the results of the second deterministic function to generate a value for each server comprises the act of using a third deterministic function selected so as to assign the data objects with relative load factors among the servers in the array.
 Description Submit all comments and votes
 


BACKGROUND OF THE INVENTION

1. The Field of the Invention

The field of the present invention is that of the proxy servers used in connection with accessing data over the World Wide Web ("WWW") through the Internet or other Wide Area Network ("WAN"). More particularly, the present invention involves an array of multiple proxy servers configured together to act as a single distributed cache of information identified through the use of Uniform Resource Locators ("URL"). Specifically, the invention treats intelligent or enabled clients that may directly access a desired URL data object from a particular proxy server in a proxy server array having the URL requests laterally routed or transferred amongst array members.

2. Present State of the Art

Generally speaking, the concept of a "cache" or "caching" as used in computer terminology and applications typically means making a more accessible copy of some piece of data for a performance advantage. For example, information that is cached is in many instances more accessible than it otherwise would be so that processing speed is increased since accessing the cached information is quicker.

Since having excess copies of data can create its own sort of overhead and because cache size is limited, data is not typically retained in a cache indefinitely and will eventually be overwritten after a certain amount of time if the cache is being fully utilized. This may occur according to a Leased Recently Used ("LRU") algorithm, an expiration time, or any other relevant criteria for a particular application. Caching commonly exists at the microprocessor level with instruction and data caches so as to avoid excessive accessing of system RAM and may also exist elsewhere in a computer system or in a network of computer systems.

Another form of caching is commonly used in relation to accessing data or information over the WWW. A user having Internet access can directly receive a URL identified data object, such as a web page, and then display it locally on a browser. Each time the user receives such a data object, there is a delay as the Hyper Text Transport Protocol ("HTTP") request travels across the Internet to the location identified by the URL and the destination server processing the URL request responds with the requested data object. Because the data object can be quite large, the time to access the data objects with the HTTP request and response creates a significant amount of information traveling over the Internet connection causing delays and excess overhead.

In some organizations, many of the same data objects are requested by the various users within the organization. It is therefore common to introduce a proxy server that will receive user access requests from a client application, such as a web browser. Referring to FIG. 1, the use of a proxy server acting as a cache is shown. A client application 20 will direct all URL requests to a proxy server 21 that will serve as a cache for any information (i.e., URL data objects) associated with the URL. Should the proxy server 21 not have the URL data object within its cache, it will, in turn, make access over the Internet 22 to the destination server found within the URL in order to place the data object into its cache and then respond to the client 20 URL request. Thereafter, should another client make a request to the proxy server 21, it can be serviced directly from the cache without necessary access over the Internet to the destination server found in the URL itself.

Note that the client 20 can be any software application capable of communicating or directing requests to the proxy server 21 using the HTTP protocol and would include other proxy servers, web browsers, Internet "enabled" applications, etc. Furthermore, HTTP requests contain a variety of information that can be used to "force" the proxy server 21 to access the URL data object over the Internet in order to assure that the "freshest" copy has been accessed. Such operation of proxy servers and their use as caches are generally known in the art for use in servicing HTTP requests.

It should be noted that the term URL may indicate either the address of where a data object is originally located and accessed, or the data object itself. To distinguish, a URL itself would be an address or location of the data object whereas a URL data object would be the actual web page file that is transmitted across the Internet to the client application. Though the appropriate usage is readily identifiable by context, efforts will be made throughout this application to distinguish between the two.

There are benefits of having a proxy server acting as a cache for URL data objects. One benefit is that for cached items, the total access time for a user is generally reduced since the connection between the client 20 and the proxy server 21 is typically over a Local Area Network ("LAN") rather than having to access the data object over the Internet or other Wide Area Network ("WAN"). Another benefit is for security purposes so that an organization may have a "firewall" to protect itself from unwanted outside penetration.

Larger corporations and other organizations may have many proxy servers servicing their needs. It becomes desirable in such situations to harness many proxy servers together as a single, logical distributed cache. Ideally, such a single distributed cache would have no duplication of URL data objects contained therein. Furthermore, a single distributed cache should have as little overhead as possible in servicing any given URL request that arrives at a member of the distributed cache. In other words, the actual URL data object may not be residing at the same server that originally receives the URL request and some form of forwarding, routing, or acquisition of the desired URL data object must occur in order to service that original URL request.

One attempt at creating a such a distributed cache is the Internet Cache Protocol ("ICP") that coordinates the activity of an "array" of proxy servers. Though ICP allows an array of proxy servers to function as a distributed cache, it also has some drawbacks as will be explained hereafter.

Referring now to FIG. 2, the interaction of a client with a proxy server array is shown. In such an arrangement, a client 23 will contact one of the proxy servers in the array 24 in order to access URL data objects that are available over the Internet 25. Typically, a client 23 is assigned to a particular proxy server within the proxy server array 24 and may