# US 8,543,713 B2 · Computing environment arranged to support predetermined URL patterns

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 8,543,713 B2
- Document ID: US8543713B2
- Status: Granted
- Kind: B2
- Application number: 12/194,481
- Filed: 2008-08-19
- Published: 2010-02-25
- Granted: 2013-09-24
- Earliest claimed: 2008-08-19
- Assignees: Apple Inc.
- Applicants: David Koski
- Inventors: David Koski
- Web page: https://patentgrep.com/patent/US8543713B2

## CPC

- H04L 67/563: Data redirection of data network streams
- H04L 67/1001: for accessing one among a plurality of replicated servers
- H04L 67/1012: based on compliance of requirements or conditions with available server resources
- H04L 67/63: Routing a service request depending on the request content or context
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A computing environment for hosting web services and applications is disclosed. The computing resources of the computing environment can be managed, controlled or utilized to facilitate improved hosting of web services, such as hosting of websites. According to one aspect, Universal Resource Locators (URLs) can be programmatically defined and utilized to centralize URL descriptions which can be utilized by the computing resources. According to another aspect, customized load balancing can be provided for the computing environment.

## Claims

### Claim 1

A method for processing a request at a computing system having a plurality of computers coupled to a network, the computing system supporting a plurality of applications, said method comprising:
receiving an incoming request line comprising a Universal Resource Locator(URL);
parsing the incoming request to determine one or more segments of the incoming request line;
identifying a set of URL segments within the URL pertaining to the incoming request line;
determining whether the set of URL segments match corresponding segments of any of a plurality of predetermined URL patterns which are provided in a data structure which includes a Trie, with the different segments of the plurality of predetermined URL patterns being branches or endpoints in the Trie;
determining an appropriate one of the applications to receive the incoming request line based on the matching one of the predetermined URL patterns;
directing the incoming request line to the determined application based on at least one of the determined segments of the incoming request line;
receiving a response to the incoming request line from the determined application; and
responding to the incoming request line with the response provided by the determined application.

### Claim 2 (depends on 1)

The method as recited in claim 1, wherein said determining of the appropriate one of the applications to receive the incoming request line comprises:
determining whether one or more of the determined segments of the incoming request line match any of a plurality of predetermined patterns; and
determining the appropriate one of the applications to receive the incoming request line based on the matching of one or more of the determined segments to one of the predetermined patterns.

### Claim 3 (depends on 1)

The method as recited in claim 1, wherein said determining whether the set of the URL segments match corresponding segments of any of the plurality of predetermined URL patterns operates to simultaneously evaluate the predetermined URL patterns.

### Claim 4 (depends on 1)

The method as recited in claim 1, wherein the predetermined URL patterns are programmatically defined and compiled into a data structure.

### Claim 5 (depends on 1)

The method as recited in claim 1, wherein the computing system is a data center that hosts at least one website, wherein the incoming request line is a request for information pertaining to the website.

### Claim 6 (depends on 5)

The method as recited in claim 5, wherein the applications are web applications.

### Claim 7

A computing system having a plurality of server computers for supporting a website, comprising:
a processor and a memory in each of the plurality of server computer;
a plurality of applications configured to interface with a plurality of processes operable on a set of the server computers; and
a load balancer operatively connected to direct an incoming request including a URL to one of said applications, wherein the load balancer is configured to,
identify a set of URL segments within the URL pertaining to the incoming request,
determine whether the set of URL segments match corresponding segments of any of a plurality of predetermined URL patterns stored in a data structure which includes a Trie, with the different segments of the plurality of predetermined patterns being branches or endpoints in the Trie, and
determine the appropriate one of the applications to receive the incoming request based on the matching one of the predetermined URL patterns.

### Claim 8 (depends on 7)

The computing system as recited in claim 7, wherein said load balancer simultaneously compares the incoming request against the set of predetermined patterns to provide the comparison data.

### Claim 9 (depends on 7)

The computing system as recited in claim 7, wherein the set of predetermined patterns are provided in a data structure.

### Claim 10 (depends on 9)

The computing system as recited in claim 9, wherein the data structure allows said load balancer to simultaneously compare the incoming request against the set of predetermined patterns.

### Claim 11 (depends on 7)

The computing system as recited in claim 7, the comparing of the incoming request against the set of predetermined patterns by said load balancer comprises determining whether a URL corresponding to the incoming request matches any of the predetermined patterns.

### Claim 12 (depends on 7)

The computing system as recited in claim 7, wherein the server computers are arranged into different partitions, and wherein each of said applications are operable to select and interface with a subset of the partitions.

### Claim 13 (depends on 12)

The computing system as recited in claim 12, wherein the partitions are configured to interface with the processes operating on the server computers.

### Claim 14 (depends on 12)

The computing system as recited in claim 12, wherein said applications are configured to parse the incoming request against a set of predetermined patterns to determine the one of the partitions to receive the incoming request.

### Claim 15 (depends on 14)

The computing system as recited in claim 14, wherein the parsing identifies a plurality of segments of the incoming request, and wherein at least one of the segments is a parameter pertaining to a programming language object.

### Claim 16 (depends on 7)

The computing system as recited in claim 7, wherein said load balancer receives configuration data embodying the set of predetermined patterns.

### Claim 17 (depends on 16)

The computing system as recited in claim 16, wherein the predetermined patterns are programmatically defined and compiled into the configuration data.

### Claim 18

A computer readable medium, which is non-transitory, including at least executable computer program code tangibly embodied therein for processing a request to a computing system coupled to a network, where the computing system supports a plurality of applications, said computer readable medium comprising:
computer program code for receiving an incoming request line comprising a Universal Resource Locator;
computer program code for parsing the incoming request line containing a URL to determine one or more segments of the incoming request line;
computer program code for identifying a set of URL segments within the URL pertaining to the incoming request line;
computer program code for determining whether the set of URL segments match corresponding segments of any of a plurality of predetermined URL patterns which are provided in a data structure which includes a Trie, with the different segments of the plurality of predetermined patterns being branches or endpoints in the Trie;
computer program code for determining an appropriate one of the applications to receive the incoming request based on the matching of one of the predetermined URL patterns; and
computer program code for directing the incoming request line to the determined application.

### Claim 19 (depends on 18)

The computer readable medium as recited in claim 18, wherein the predetermined patterns are programmatically defined and compiled into a data structure.

### Claim 20 (depends on 19)

The computer readable medium as recited in claim 19, wherein said computer readable medium further comprises:
computer program code for receiving a response to the incoming request line from the determined application; and
computer program code for responding to the incoming request line with the response provided by the determined application.

### Claim 21

A computer readable medium, which is non-transitory, including at least executable computer program code tangibly embodied therein for processing universal resource locators, said computer readable medium comprising:
computer program code for parsing an incoming request containing a URL to determine one or more segments of the incoming request;
computer program code for identifying a set of URL segments within the URL pertaining to the incoming request;
computer program code for determining whether the set of URL segments match corresponding segments of any of a plurality of predetermined URL patterns which are provided in a data structure which includes a Trie, with the different segments of the plurality of predetermined patterns being branches or endpoints in the Trie; and
computer program code for dispatching the incoming URL to an application for processing based on one of the predetermined URL patterns that matches the incoming URL.

### Claim 22 (depends on 21)

The computer readable medium as recited in claim 21, wherein said computer readable medium further comprises: computer program code for generating a URL in accordance with one of the predetermined URL patterns.
