Method and apparatus for distributed application execution
This invention provides methods and apparatus for executing applications in a distributed manner employing one or more proxy servers and one origin server. The invention allows the applications to be executed primarily at the proxy servers rather than at the origin servers, thereby gaining in scalability and improved user response time. A redirection mechanism is used to direct requests to one of the proxy servers. The proxy server uses caching techniques to bring information records needed for application execution to the proxy servers. The code required for application execution is also obtained from the origin server. The invention discusses applying this technique to three Web-based applications, namely Web-based auctions, generating personalized content for Web-users, and creating advertisements for users accessing a Web page.
Latest IBM Patents:
This application claims priority to Provisional application entitled “Method and Apparatus for Distributed Application Execution”, filed Dec. 17, 2001, assigned Ser. No. 60/341,296.
FIELD OF THE INVENTIONThe present application relates to the field of computer networks and distributed applications. It is more particularly directed to applications made available on the Internet using a system of Web-browsers and Web-servers.
BACKGROUND OF THE INVENTIONAccess over the Internet to Web-based applications is provided by having a Web-browser connect directly over a network of routers to a central Web server that executes the applications. The applications generate text formatted in HTML syntax that can be parsed and displayed by the Web-browser. Examples of some applications that are made available on the Web include Web-based auctions and Web-based store fronts.
However, during periods of congestion due to traffic patterns on the Internet, this arrangement results in poor response times for the end user. The situation is typically worsened when a user or a set of users is located far from the central Web server. As an example, in a Web-based auction, the requesters for a specific item may be located at a site that is far away from the central Web server. Such a situation arises, for example, if the item being sold has some relevance to a geographic region or locality. A requester is defined as a user who seeks information about an auction item or who actually participates in an auction. For a more specific example, consider the auction of a baseball bat that was used in a record setting high school match between two towns in California. It is to be expected that most requesters for this item would be in California. However, if the central Web site is located in New York, the performance perceived by the clients would be adversely impacted whenever the network between California and New York was congested. Executing the auction at a site in California would increase the performance of the application as perceived by its users.
One way to improve the response time, reliability, and availability of the application would thus be to distribute the auction to proxy servers located closer to the bidders. Here the term “proxy server” refers to one of a set of distributed Web servers that can provide the same service as the main central Web server, and that are in communication with it. This is in contrast to client proxies that act on behalf of requesters.
The current state of the art allows such distributed Web servers to provide access to static content, such as images or video files. However, such distribution is not usually possible for applications that are accessed over the Web. In this invention, we describe a scheme that can allow Web-based applications to benefit from such geographic distribution. Specifically, we look at applications that can provide Web-based auctions, generation of personalized content, and generation of advertisements that are incorporated in Web pages.
SUMMARY OF THE INVENTIONAccordingly, an aspect of the present invention is to provide methods and apparatus by which to distribute and accelerate execution of Web-based applications by means of executing them at proxies located closer to requesters.
Another aspect of the present invention provides an apparatus of a proxy server that provides an execution environment and maintains the required state for Web-based applications.
Another aspect of the present invention provides an apparatus of a main server that provides an execution environment and maintains the required state for Web-based applications.
Another aspect of the present invention provides methods and apparatus by which to distribute and accelerate execution of Web-based auctions by means of executing them at proxies located closer to requesters.
Another aspect of the present invention provides an apparatus of a proxy server that provides an execution environment and maintains the required state for Web-based auctions.
Another aspect of the present invention provides an apparatus of a main server that provides an execution environment and maintains the required state for Web-based auctions.
Another aspect of the present invention provides methods and apparatus by which to distribute and accelerate execution of Web-based personalized content by means of generating it at proxies located closer to requesters.
Another aspect of the present invention provides an apparatus of a proxy server that provides an execution environment and maintains the required state for Web-based personalization of content.
Another aspect of the present invention provides an apparatus of a main server that provides an execution environment and maintains the required state for Web-based personalization of content.
Another aspect of the present invention provides methods and apparatus by which to distribute and accelerate execution of Web-based generation of advertisements by means of generating them at proxies located closer to requesters.
Another aspect of the present invention provides an apparatus of a proxy server that provides an execution environment and maintains the required state for Web-based generation of advertisements.
Another aspect of the present invention provides an apparatus of a main server that provides an execution environment and maintains the required state for Web-based generation of advertisements.
BRIEF DESCRIPTION OF THE DRAWINGSThese and other aspects, objects, features, and advantages of the present invention will become apparent upon further consideration of the following detailed description of the invention when read in conjunction with the drawing figures, in which:
This invention provides schemes whereby a Web-based auction may be executed by a set of distributed proxies, thus accelerating its operation while still maintaining administrative and operational control of the auction at the original central server.
Furthermore, in this invention, we provide a scheme whereby Web-based generation of personalized content may be executed by a set of distributed proxies, thus accelerating the personalization operation while still maintaining administrative and operational control at the original central server.
Furthermore, in this invention, we provide a scheme is provided whereby Web-based generation of advertisements may be executed by a set of distributed proxies, thus accelerating the operation of this application while still maintaining administrative and operational control of the generation of advertisements at the original central server. The present invention presents methods and apparatus to distribute and accelerate execution of Web-based applications by means of executing them at proxies located closer to requesters. It includes an apparatus of a proxy server that provides an execution environment and maintains the required state for Web-based applications; an apparatus of a main server that provides an execution environment and maintains the required state for Web-based applications; methods and apparatus by which to distribute and accelerate execution of Web-based auctions by means of executing them at proxies located closer to requesters; an apparatus of a proxy server that provides an execution environment and maintains the required state for Web-based auctions; an apparatus of a main server that provides an execution environment and maintains the required state for Web-based auctions; methods and apparatus by which to distribute and accelerate execution of Web-based personalized content by means of generating it at proxies located closer to requesters; an apparatus of a proxy server that provides an execution environment and maintains the required state for Web-based personalization of content; an apparatus of a main server that provides an execution environment and maintains the required state for Web-based personalization of content; methods and apparatus by which to distribute and accelerate execution of Web-based generation of advertisements by means of generating them at proxies located closer to requesters; an apparatus of a proxy server that provides an execution environment and maintains the required state for Web-based generation of advertisements; an apparatus of a main server that provides an execution environment and maintains the required state for Web-based generation of advertisements.
The central server as described in
Periodically, or by some other predetermination criteria, the weights are re-computed and checked to determine which proxy has the highest weight, as in 402. The proxy server with the highest weight should be the one closest to the zone with the most requesters, and also having a relatively light load. Once the best proxy server is determined, the proxy or main server can initiate migration of the auction for the item, as in 403.
The schemes as described above can be seen as a system that achieves distribution of auction execution. An embodiment of an apparatus, 601, that implements a distributed auction system is shown in
The application acceleration module, 607, provides a general environment for distributing Web-based applications. It allows the proxy to automatically download the auction application program from the main server. Its function is distributed between the main auction server and the set of proxies. The details of such a module are available in a cofiled application titled “Method and Apparatus for Distributed Application Acceleration.” This invention may, however, use alternate methods that provide a general environment for distributing Web-based applications.
The load monitor, 606, is a distributed module that resides on the main server and on each proxy server. It collects load statistics and shares the information with the other load monitors. The sharing can be done by multicasting to other proxies or by reporting statistics to a single instance of the module which serves as a centralized repository.
The auction director module, 602, consults the auction location record, 604, to determine where to direct requesters based on their item of interest. It may be implemented in a variety of manners. One way to implement it is by means of a module within the main server that is responsible for redirecting requests to the appropriate proxy server. Such a redirection module might be implemented as a plug-in module among a variety of Web-servers such as Apache, Netscape or Microsoft IIS servers, which are commonly in use in the industry. The module would consult a table of redirection rules that specify where requests for different auction items (e.g., as indicated by their URLs) should be directed, and use this information to direct the requester.
Another embodiment of the auction director could be via a stand-alone HTTP server that provides the same functionality as that of the module described above. The HTTP server directs requests to proxy servers, or to the main server, depending on the location of the auction item. The HTTP server must communicate with the auction location record to know the location of auction items.
The set of auction and bidder statistics, 603, provides a record of events in the auction, along with the location of requesters. A set of these statistics is maintained for each auction item. The auction statistics record at least each submitted request, including the requester's identity, request timestamps, and the highest bid received for each item. The requester location statistics keep track of where (i.e., in which zone) requesters are located. In an alternate embodiment, the collection of these statistics are simplified by dividing the network into zones to which users are statically mapped. Suppose a request B arrives for an auction item from zone Z. First B is recorded in the request log. In addition the count of requests from zone Z is incremented. Consulting these statistics should give an immediate view of the zone that is generating the most requests for the auction item.
The auction location record 604 keeps track of which machine (proxy or main server) is hosting the auction for each item. It serves as a directory for the auction director module, 602, to allow the director to determine where to send requesters for a particular auction item. The auction location record may be embodied as a centralized directory that is accessed and updated as requests arrive and auctions are migrated.
In a general embodiment of the present invention, the auction migrator, 605, is a distributed module that resides on each machine, i.e., proxies and the main server. The migrator periodically consults the requester statistics record, 603, and load monitor, 606, to determine if the current proxy is the best location for the auction for each particular item. If, for example, most of the requests for an item are coming from another zone, i.e., not the proxy's own zone, the migrator can initiate migration to the proxy in a zone closer to the requester population. The auction migrator implements the migration method described in
The components of the distributed architecture shown in
The main server, 801, includes a traditional web-server, 802, the auction programs to be downloaded to proxy servers, 803, a local main auction program, 804, and a set of feedback programs, 805. The web-server, 802, provides the means by which a proxy server can gain access to the set of programs 803, 804 and 805. The downloadable program, 803, is transferred to a proxy server upon request. The local program, 804, provides a means by which a proxy server can execute some parts of the auction processing at the main server itself.
As an example, a proxy server may want to execute auction result notification only at the main server. The auction feedback program, 805, provides a means by which a proxy server can provide diagnostics and management information to the main server. An example of the feedback program, 805, would be a logger servlet that can obtain logging messages generated by the auction executing at the proxy server in order to recover from execution failures.
In some embodiments of the main server, the Web-server may incorporate an ability to redirect user requests to other servers. This would be an instance of the auction director module (602 in
The process of personalization begins in step 901 when a user makes a request to access information from the system. In step 903, the system determines an appropriate proxy server at which the request ought to be executed. When the request is dispatched to the appropriate proxy server, in step 905 the proxy server caches a set of information records that are related to creating a personalized response to the request. Caching refers to the process by which the proxy server checks to see whether it has up-to-date copies of information records present locally, and if not, it obtains them from the origin server. The types of information records that need to be cached are described further in
The information records maintained at the proxy site are divided into two types: a set of information records that contain user profiles, and another set of information records that contain templates on the basis of which personalized content is generated. A user profile contains the preferences and particulars of a specific user, or a group of users. Thus, a user profile may include details such as the fact that a user is interested in sports events or stock market events, whether he wants to read the pages in English or French, and other preferences of a similar nature.
It is to be noted that the user profiles may be maintained separately for each individual user, or on the basis of a group of users. When defined for a group of users, the user profile may be defined for all users originating from a specific group of IP addresses, a specific domain name, or users accessing a specific URL. The template information records contain information that details the different parts of a page that is to be served to the user. A sample template is often used to define that the page includes two tables placed side by side, with the first table including of statically defined information, while the second table contains a list of items that are generated depending on the user profile.
An overall distributed system for distribution of personalized content is shown in
The flowchart shown in
The classifier program code, 1509, maps each user request into one of many categories. The set of all advertisements are divided into different categories, each category containing one or more advertisements. The set of all advertisements includes one or more advertisements. The selector program code, 1511, selects one of the advertisements randomly from the selected category and displays it to the user as part of its response.
When advertisements have to be generated in a specific manner, e.g., an advertisement has to be shown at a specific time, the selector module can be modified to select that particular advertisement more often. Similarly, the set of advertisements which are maintained in the cache at the proxy server can also be selected so as to prefer the selection of targeted advertisements.
A structure of an apparatus at the proxy server used for generation of advertisements is shown in
Variations described for the present invention can be realized in any combination desirable for each particular application. Thus particular limitations, and/or embodiment alternatives and/or enhancements described herein, which may have particular advantages to the particular application, need not be used for all applications. Also, not all limitations need be implemented in methods, systems and/or apparatus including one or more concepts of the present invention.
It is noted that the present invention can be realized in hardware, software, or a combination of hardware and software. A tool according to the present invention can be realized in a centralized fashion in one computer system, or in a distributed fashion where different elements are spread across several interconnected computer systems. Any kind of computer system—or other apparatus adapted for carrying out the methods described herein—is suitable. A typical combination of hardware and software could be a general purpose computer system with a computer program that, when being loaded and executed, controls the computer system such that it carries out the methods described herein. The present invention can also be embedded in a computer program product, which includes all the features enabling the implementation of the methods described herein, and which—when loaded in a computer system—is able to carry out these methods.
Computer program means or computer program in the present context means any expression, in any language, code or notation, of a set of instructions intended to cause a system having an information processing capability to perform a particular function either directly or after conversion to another language, code or notation, and/or reproduction in a different material form.
It is noted that the foregoing has outlined some of the more pertinent objects and embodiments of the present invention. Although the description is made for particular arrangements and methods, the intent and concept of the invention is suitable and applicable to other arrangements. It will be clear to those skilled in the art that modifications to the disclosed embodiments can be effected without departing from the spirit and scope of the invention. The described embodiments ought to be construed to be merely illustrative of some of the more prominent features and applications of the invention. Other beneficial results can be realized by applying the disclosed invention in a different manner or modifying the invention in ways known to those familiar with the art.
Claims
1. A method comprising distributing at least one operation of at least one networked application, including the steps of:
- directing at least one user request to at least one surrogate server;
- caching a set of information records needed for said at least one operation at said at least one surrogate server; and
- executing said at least one operation at said at least one surrogate server using the set of information records.
2. A method as recited in claim 1 further comprising, refreshing the set of information records from an origin server.
3. The method as recited in claim 1, wherein said at least one operation is an operation selected from a group of operations consisting of:
- processing an auction of an item;
- a personalization operation, or
- generating advertisements for a client.
4. A method as recited in claim 1, including a step inclusion selected from a group of step inclusions consisting of:
- the step of directing includes receiving a plurality of service requests related to a specific auction item, and determining an appropriate server to which to direct the service requests related to the specific auction item, and migrating an auction state for the specific auction item to the appropriate server;
- the step of directing includes receiving at least one service request from a user, and determining an appropriate proxy server to which to direct said at least one service request;
- the step of executing includes personalizing a response provided to the user at the appropriate proxy server using said information records;
- the step of caching includes caching a set of advertisements;
- the step of executing includes mapping a user request to a category of advertisement types, and selecting said at least one advertisement corresponding to the category from the set; or
- any combination of these step inclusions.
5. A method for auction distribution comprising:
- receiving a plurality of service requests related to a specific auction item;
- determining an appropriate server to which to direct the service requests related to the specific auction item;
- migrating an auction state for the specific auction item to the appropriate server; and
- executing the auction at the appropriate server.
6. A method as recited in claim 5, comprising a limitation selected from a group of limitations consisting of:
- wherein the step of executing includes responding to at least one of the user service requests;
- wherein the step of executing includes: obtaining and recording information regarding location of requesters for the item, and constructing a request log which includes a timestamped record of at least some pertinent information for at least one of said service requests related to the specific auction item;
- wherein the step of responding includes returning auction results to at least one requester of said service requests related to the specific auction item.
- wherein the step of determining includes collecting information about the distribution of requesters.
- wherein the step of determining includes computing a migration weight related to the specific auction item for at least one proxy server and a main server, and selecting a particular proxy server having a highest weight as the appropriate server;
- wherein the migration weight is determined by a distance to a zone having a largest number of requesters for a specific auction item;
- wherein the migration weight is determined by a relative load of a proxy server;
- wherein the step of determining includes initiating migration of the auction for the item;
- wherein the step of migrating includes sending a message to the appropriate server informing the appropriate server of an intent to migrate the auction state, receiving a positive acknowledgement from the appropriate server, and forwarding subsequent requests for said auction item to the appropriate server;
- wherein the auction state includes at least one auction parameter;
- wherein the auction parameter includes a parameter from a group of parameters consisting of: an item description, a log of existing bids, a minimum criterion, or a combination of these;
- wherein the step of forwarding employs an HTTP redirect mechanism;
- wherein the method further comprises repeating the steps of determining and migrating in accordance with a redetermination criterion;
- wherein the method further comprises logging at least a portion of at least one of said service requests related to the specific auction item; or
- any combination of these limitations.
7. A method comprising distributing at least one personalization operation, including the steps of:
- receiving at least one service request from a user;
- determining an appropriate proxy server to which to direct said at least one service request;
- caching a set of information records to the appropriate proxy server; and
- personalizing a response provided to the user at the appropriate proxy server using said information records.
8. A method as recited in claim 7, including at least one limitation taken from a group of limitations consisting of:
- wherein the step of caching a set of information records comprises caching a set of user profiles at the proxy server;
- wherein the step of caching a set of information records includes at least one of caching a set of category records at the proxy server; and caching a set of templates at the proxy server;
- wherein the method further comprises the steps of: collecting statistics on URLs accessed by the user, sending the statistics to a server, and changing a category of the user on the basis of the statistics;
- wherein the step of caching includes periodically refreshing a cache of templates from the origin server;
- wherein the step of distributing at least one personalization operation includes personalizing server-based content;
- wherein server-based content is Web content;
- wherein the step of determining an appropriate proxy server includes employing information related to the user;
- wherein the step of personalizing comprises at least one step taken from a group of steps consisting of: locating a specific user profile for the user, determining a specific category on the basis of the specific user profile, selecting the template for a URL accessed by the user, and generating a response for the user using the template and the category;
- wherein the step of caching includes periodically refreshing a cache of user profiles from a server; or
- any combination of these limitations.
9. An apparatus comprising:
- an origin server including a set of information records related to at least one user and a redirection mechanism to send a request from said at least one user to a proxy server; and
- at least one proxy server including a cache of information records related to at least one user and program code to personalize server content using information records in the cache of information records,
- used in order to distribute at least one personalization operation.
10. An apparatus as in claim 9, wherein the origin server and the proxy server are Web servers.
11. A computer program product comprising a computer usable medium having computer readable program code means embodied therein for causing distribution of at least one personalization operation, the computer readable program code means in said computer program product comprising computer readable program code means for causing a computer to effect the functions of claim 9.
12. A method comprising distributing the generation of at least one advertisement, said method including the steps of:
- mapping a user request to a category of advertisement types;
- caching a set of advertisements;
- selecting said at least one advertisement corresponding to the category from the set; and
- refreshing the set of advertisements.
13. A method as in claim 12, further comprising a step inclusion selected from a group of step inclusions consisting of:
- wherein the step of caching includes maintaining separate caches for a first category of advertisements and a second category of advertisements;
- wherein the step of refreshing includes selecting at least one particular advertisement to be cached in maintaining a target display rate for showing said at least one particular advertisement;
- wherein the step of selecting includes modifying a Web page to include said at least one advertisement; or
- any combination of these step inclusions.
14. A program storage device readable by machine, tangibly embodying a program of instructions executable by the machine to perform method steps for distributing the generation of at least one advertisement, said method steps comprising the steps of claim 12.
15. An apparatus comprising:
- an origin server comprising a copy of at least one advertisement to be displayed to a user; and
- at least one proxy server including: an classifier module to map a user request into a category of advertisement types; a cache of advertisements for said category, said cache being refreshed from the copy at the origin server; and a selector module for selecting an advertisement from the cache and including it in the response to the user,
- in order to distribute a generation process of said at least one advertisement.
15. An apparatus as described in claim 14, wherein at least one of the origin server and said at least one proxy server is a Web-server.
16. An article of manufacture comprising a computer usable medium comprising computer readable program code means embodied therein for causing operation distribution of at least one networked application, the computer readable program code means in said article of manufacture comprising computer readable program code means for causing a computer to effect the steps of claim 1.
17. An article of manufacture comprising a computer usable medium comprising computer readable program code means embodied therein for causing distribution of at least one personalization operation in a network with a plurality of machines, the computer readable program code means in said article of manufacture comprising computer readable program code means for causing a computer to effect the steps of claim 7.
18. An article of manufacture comprising a computer usable medium comprising computer readable program code means embodied therein for causing distribution of the generation of at least one advertisement in a network with a plurality of machines, the computer readable program code means in said article of manufacture comprising computer readable program code means for causing a computer to effect the steps of claim 12.
19. An article of manufacture comprising a computer usable medium having computer readable program code means embodied therein for causing auction distribution, the computer readable program code means in said article of manufacture comprising computer readable program code means for causing a computer to effect the steps of claim 5.
20. A computer program product comprising a computer usable medium having computer readable program code means embodied therein for causing distribution of a generation process of said at least one advertisement, the computer readable program code means in said computer program product comprising computer readable program code means for causing a computer to effect the functions of claim 15.
Type: Application
Filed: Dec 17, 2002
Publication Date: Mar 31, 2005
Patent Grant number: 7447731
Applicant: International Business Machines Corporation (Armonk, NY)
Inventors: Seraphin Calo (Cortlandt Manor, NY), Anees Shaikh (Yorktown Heights, NY), Renu Tewari (San Jose, CA), Dinesh Verma (Mount Kisco, NY)
Application Number: 10/321,908