Managing server resources for hosted applications
First Claim
1. A method of providing access for a plurality of application-level users to an application comprising a plurality of resource class components comprising tiered layers of web servers, commerce servers, and database servers collectively executing on multiple networked machines, the method comprising:
- receiving an incoming flow of requests from application-level users to use an application and components of said application;
providing, for each of the application-level users, respective sets of one or more application instances of each resource class component for the application on one or more machines, to service the incoming requests from respective application-level users to use the application;
directing each of the incoming requests to a particular application instance of an appropriate resource class component;
monitoring, for each of the application-level users, the number of request serviced by the application instances of the resource class components of the application;
identifying, within a time constraint, failures on any of said multiple networked machines;
changing the number of application instances of one or more resource class components in response to the monitored number of requests for each resource class component and based on machines comprising failures;
maintaining a record of the current rate of requests received from respective application-level users, based on the monitored number of serviced requests; and
collectively and automatically allocating fractions of different resource class components to a particular application-level user in response to the changed number of application instances of one or more resource class components by using a computational load of each request imposing on said application, wherein said computational load corresponds to a number of requests allocated for each resource instance, wherein said machines comprising failures are prevented from receiving allocations of resources.
1 Assignment
0 Petitions
Accused Products
Abstract
In an ASP server farm, requests to use an application are directed to a particular executing instance of the application (or an appropriate component thereof) that is identified as being the least loaded of the available such instances of the application or its component. The number of such instances is dynamically increased or decreased in response to the number of requests for the application or components thereof. Requests may be directed (in accordance with the first aspect) or the instances adjusted (in accordance with a second aspect) on a per client-basis, in which instances of the application and/or components thereof are reserved for the use of a user or a particular group of users. Operation in this manner facilitates compliance with service agreements with respective users or groups of users.
-
Citations
13 Claims
-
1. A method of providing access for a plurality of application-level users to an application comprising a plurality of resource class components comprising tiered layers of web servers, commerce servers, and database servers collectively executing on multiple networked machines, the method comprising:
-
receiving an incoming flow of requests from application-level users to use an application and components of said application; providing, for each of the application-level users, respective sets of one or more application instances of each resource class component for the application on one or more machines, to service the incoming requests from respective application-level users to use the application; directing each of the incoming requests to a particular application instance of an appropriate resource class component; monitoring, for each of the application-level users, the number of request serviced by the application instances of the resource class components of the application; identifying, within a time constraint, failures on any of said multiple networked machines; changing the number of application instances of one or more resource class components in response to the monitored number of requests for each resource class component and based on machines comprising failures; maintaining a record of the current rate of requests received from respective application-level users, based on the monitored number of serviced requests; and collectively and automatically allocating fractions of different resource class components to a particular application-level user in response to the changed number of application instances of one or more resource class components by using a computational load of each request imposing on said application, wherein said computational load corresponds to a number of requests allocated for each resource instance, wherein said machines comprising failures are prevented from receiving allocations of resources. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A method of providing access for a plurality of application-level users to an application comprising a plurality of resource class components comprising tiered layers of web servers, commerce servers, and database servers collectively executing on multiple networked machines, the method comprising:
-
receiving an incoming flow of requests from application-level users to use an application and components of said application; providing, for each of the application-level users, respective sets of one or more application instances of each resource class component to service the incoming requests from the application-level users to use the application; monitoring, for each of the application-level users, the resources currently available and resources currently consumed by the requests serviced by application instances of the resource class components of the application; identifying, within a time constraint, failures on any of said multiple networked machines; maintaining a record of resources currently available to respective application-level users; and
a record of resources currently consumed by respective application-level users;
both records of said resources being maintained in respect of each of the one or more application instances of each resource class components;adjusting the respective numbers of said one or more application instances of each resource class component; and collectively and automatically allocating fractions of different resource class components to a particular application-level user in response to a fluctuating number of application instances of one or more resource class components by using a computational load of each request imposing on said application, wherein said computational load corresponds to a number of requests allocated for each resource instance, wherein said machines comprising failures are prevented from receiving allocations of resources, and wherein said application instances of each resource class component are adjusted for each application-level user based (i) at least partly on said records of resources currently available and currently consumed by respective application-level users (ii) at least partly on predetermined information that estimates the number of each resource class components required to service requests for said application instances of the resource class components, and (iii) at least partly on machines comprising failures.
-
-
10. A system for providing access for a plurality of application-level users to an application comprising a plurality of resource class components comprising tiered layers of web servers, commerce servers, and database servers collectively executing on multiple networked machines, the system comprising:
-
means for receiving an incoming flow of requests from application-level users to use an application and components of said application; means for providing, for each of the application-level users, respective sets of one or more application instances of each resource class component to service the incoming requests form respective application-level users to use the application; means for directing each of the incoming requests to a particular application instance of an appropriate resource class component; means for monitoring, for each of the application-level users, the number of requests serviced by the application instances of the resource class components of the application; means for identifying, within a time constraint, failures on any of said multiple networked machines; means for changing the number of application instances of one or more resource class components in response to the monitored number of requests for each resource class component and based on machines comprising failures; means for maintaining a record of the current rate of requests received from respective application-level users, based on the monitored number of serviced requests; and means for collectively and automatically allocating fractions of different resource class components to a particular application-level user in response to the changed number of application instances of one or more resource class components by using a computational load of each request imposing on said application, wherein said computational load corresponds to a number of requests allocated for each resource instance, wherein said machines comprising failures are prevented from receiving allocations of resources.
-
-
11. A computer software program, recorded on a medium and capable of execution by computing means able to interpret the computer software program, for providing access for a plurality of application-level users to an application comprising a plurality of resource class components comprising tiered layers of web servers, commerce servers, and database servers collectively executing on multiple networked machines, the computer software program comprising:
-
code means for receiving an incoming flow of requests from application-level users to use an application and components of said application; code means for providing, for each of the application-level users, respective sets of one or more application instances of each resource class component to service the incoming requests from respective application-level users to use the application; code means for directing each of the incoming requests to a particular application instance of an appropriate resource class component; code means for monitoring, for each of the application-level users, the number of requests serviced by the application instances of the resource class components of the application; code means for identifying, within a time constraint, failures on any of said multiple networked machines; code means for changing the number of application instances of one or more resource class components in response to the monitored number of requests for each resource class component and based on machines comprising failures; code means for maintaining a record of the current rate of requests received from respective application-level users, based on the monitored number of serviced requests; and
code means for collectively and automatically allocating fractions of different resource class components to a particular application-level user in response to the changed number of application instances of one or more resource class components by using a computational load of each request imposing on said application, wherein said computational load corresponds to a number of requests allocated for each resource instance, wherein said machines comprising failures are prevented from receiving allocations of resources.
-
-
12. A system for providing access for a plurality of application-level users to an application comprising a plurality of resource class components comprising tiered layers of web servers, commerce servers, and database servers collectively executing on multiple networked machines, the system comprising:
-
means for receiving an incoming flow of requests from application-level users to use an application and components of said application; means for providing, for each of the application-level users, respective sets of one or more application instances of each resource class component to service the incoming requests from the application-level users to use the application; means for monitoring, for each of the application-level users, the resources currently available and resources currently consumed byte requests serviced by application instances of the resource class components of the application; means for identifying, within a time constraint, failures on any of said multiple networked machines; means for maintaining a record of resources currently available to respective application-level users; and
a record of resources currently consumed by respective application-level users;
both records of said resources being maintained in respect of each of the one or more application instances of each resource class components;means for adjusting the respective numbers of said one or more application instances of each resource class component; and means for collectively and automatically allocating fractions of different resource class components to a particular application-level user in response to a fluctuating number of application instances of one or more resource class components by using a computational load of each request imposing on said application, wherein said computational load corresponds to a number of requests allocated for each resource instance, wherein said machines comprising failures are prevented from receiving allocations of resources, and wherein said application instances of each resource class component are adjusted for each application-level user based (i) at least partly on said records of resources currently available and currently consumed by respective application-level users, (ii) at least partly on predetermined information that estimates the number of each resource class components required to service requests for said application instances of the resource class components, and (iii) at least partly on machines comprising failures.
-
-
13. A computer software program recorded on a medium and able to be executed by computing means able to interpret the computer software program, for providing access for a plurality of application-level users to an application comprising a plurality of resource class components comprising tiered layers of web servers, commerce servers, and database servers collectively executing on multiple networked machines, the computer software program comprising:
-
code means for receiving an incoming flow of requests from application-level users to use an application and components of said application; code means for providing, for each of the application-level users, respective sets of one or more application instances of each resource class component to service the incoming requests from the application-level users to use the application; code means for monitoring, for each of the application-level users, the resources currently available and resources currently consumed by the requests serviced by application instances of the resource class components of the application; code means for identifying, within a time constraint, failures on any of said multiple networked machines; code means for maintaining a record of resources currently available to respective application-level users; and
a record of resources currently consumed by respective application-level users;
both records of said resources being maintained in respect of each of the one or more application instances of each resource class componentscode means for adjusting the respective numbers of said one or more application instances of each resource class component in response to monitored number of requests for each resource class component and based on machines comprising failures; and code means for collectively and automatically allocating fractions of different resource class components to a particular application-level user in response to a fluctuating number of application instances of one or more resource class components by using a computational load of each request imposing on said application, wherein said computational load corresponds to a number of requests allocated for each resource instance, wherein said machines comprising failures are prevented from receiving allocations of resources, and wherein said application instances of each resource class component are adjusted for each application-level user based (i) at least partly on said records of resources currently available and currently consumed by respective application-level users, (ii) at least partly on predetermined information that estimates the number of each resource class components required to service requests for said application instances of the resource class components, and (iii) at least partly on machines comprising failures.
-
Specification