IP Library Granted Patent US 9,203,706
Granted Patent B2
US 9,203,706 · App. 14/463,821 · Granted Dec 1, 2015

System and method for enabling demand-based pooling of endpoint resources in a multi-application environment

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,203,706
App. No.
14/463,821
Granted
Dec 1, 2015
Kind
B2
Abstract

A system and method is provided for enabling demand-based pooling of endpoint resources in a multi-router, multi-application hosting system. The method includes dividing a plurality of endpoints into zones. Each of a plurality of routers is assigned to one of the zones. Each router is enabled to control endpoint assignments within its zone. In the preferred embodiment, for each application hosted by the system, all requests for the application are concentrated on the minimum number of endpoints required to meet demand and fault tolerance requirements. When a request for an application comes into the system, a router will route the request to an endpoint assigned to the application, regardless of whether the endpoint is within the router's zone. If a new endpoint is needed for the application, the router will assign an endpoint within its zone to the application, and inform the other routers of the assignment.

Claims (44)

1. A method for enabling demand-based pooling of endpoint resources in a system that includes (i) a plurality of endpoints on which different applications are hosted and run and (ii) a plurality of routers that route session requests for the hosted applications to the endpoints, the method comprising:

dividing the endpoints into zones;

assigning each of the plurality of routers to one of the zones;

enabling each router to control endpoint assignments within its zone, wherein an endpoint assignment specifies the one or more hosted applications an endpoint will run and wherein each router communicates the endpoint assignments within its zone to all of the other routers in the plurality of routers; and

in response to receiving an incoming session request for a hosted application, assigning the request to a router, wherein the router performs the following:

determining whether or not the number of currently open sessions for the hosted application exceeds a minimum number of ports guaranteed in the system for the application;

declining the session request if both (i) the number of currently open sessions for the hosted application exceeds the minimum number of ports guaranteed for the application and (ii) accepting additional session requests for the hosted application would violate a minimum port guarantee for another hosted application;

accepting the session request if either (i) the number of currently open sessions for the hosted application does not exceed the minimum number of ports guaranteed for the application or (ii) accepting additional session requests for the hosted application would not violate any minimum port guarantees for the other hosted applications; and

in response to accepting the session request, assigning an endpoint to the hosted application, routing the request to the assigned endpoint, and notifying all of the other routers in the plurality of routers of the assignment.

2. The method of claim 1 , further comprising:

for each of the hosted applications that requires a preloaded resource on an endpoint, assigning the application to a router that will be responsible for determining whether or not the preloaded resource is loaded onto a sufficient number of endpoints to meet demand for the application, wherein, if the responsible router determines that additional endpoint capacity is needed for the application, the responsible router loads the preloaded resource onto an additional endpoint in the router's zone and notifies other routers that the endpoint has been assigned to the application.

3. The method of claim 2 , wherein, with respect to applications that require a preloaded resource, a hash algorithm is used to determine the application assignments for the routers.

4. The method of claim 1 , wherein a hash algorithm is used to determine zone assignments for the routers.

5. The method of claim 1 , wherein the session request is randomly assigned to the router.

6. The method of claim 1 , wherein the session request is assigned to the router based on a round-robin distribution of requests among routers.

7. The method of claim 1 , wherein the session request is assigned to the router based on a load-balancing algorithm.

8. A computer program embodied on a non-transitory computer-readable medium and comprising code, that, when executed by a computer system, enables the computer system to perform the following method for enabling demand-based pooling of endpoint resources in a system that includes (i) a plurality of endpoints on which different applications are hosted and run and (ii) a plurality of routers that route session requests for the hosted applications to the endpoints, the method comprising:

dividing the endpoints into zones;

assigning each of the plurality of routers to one of the zones;

enabling each router to control endpoint assignments within its zone, wherein an endpoint assignment specifies the one or more hosted applications an endpoint will run and wherein each router communicates the endpoint assignments within its zone to all of the other routers in the plurality of routers; and

in response to receiving an incoming session request for a hosted application, assigning the request to a router, wherein the router performs the following:

determining whether or not the number of currently open sessions for the hosted application exceeds a minimum number of ports guaranteed in the system for the application;

declining the session request if both (i) the number of currently open sessions for the hosted application exceeds the minimum number of ports guaranteed for the application and (ii) accepting additional session requests for the hosted application would violate a minimum port guarantee for another hosted application;

accepting the session request if either (i) the number of currently open sessions for the hosted application does not exceed the minimum number of ports guaranteed for the application or (ii) accepting additional session requests for the hosted application would not violate any minimum port guarantees for the other hosted applications; and

in response to accepting the session request, assigning an endpoint to the hosted application, routing the request to the assigned endpoint, and notifying all of the other routers in the plurality of routers of the assignment.

9. The computer program of claim 8 , further comprising:

for each of the hosted applications that requires a preloaded resource on an endpoint, assigning the application to a router that will be responsible for determining whether or not the preloaded resource is loaded onto a sufficient number of endpoints to meet demand for the application, wherein, if the responsible router determines that additional endpoint capacity is needed for the application, the responsible router loads the preloaded resource onto an additional endpoint in the router's zone and notifies other router's routers that the endpoint has been assigned to the application.

10. The computer program of claim 9 , wherein, with respect to applications that require a preloaded resource, a hash algorithm is used to determine the application assignments for the routers.

11. The computer program of claim 8 , wherein a hash algorithm is used to determine zone assignments for the routers.

12. A computer system for enabling demand-based pooling of endpoint resources, wherein the system includes (i) a plurality of endpoints on which different applications are hosted and run and (ii) a plurality of routers that route session requests for the hosted applications to the endpoints, the system comprising:

a processor;

a memory coupled to the processor, wherein the memory stores instructions that, when executed by the processor, causes the system to perform the operations of:

dividing the endpoints into zones;

assigning each of the plurality of routers to one of the zones;

enabling each router to control endpoint assignments within its zone, wherein an endpoint assignment specifies the one or more hosted applications an endpoint will run and wherein each router communicates the endpoint assignments within its zone to all of the other routers in the plurality of routers; and

in response to receiving an incoming session request for a hosted application, assigning the request to a router, wherein the router performs the following:

determining whether or not the number of currently open sessions for the hosted application exceeds a minimum number of ports guaranteed in the system for the application;

declining the session request if both (i) the number of currently open sessions for the hosted application exceeds the minimum number of ports guaranteed for the application and (ii) accepting additional session requests for the hosted application would violate a minimum port guarantee for another hosted application;

accepting the session request if either (i) the number of currently open sessions for the hosted application does not exceed the minimum number of ports guaranteed for the application or (ii) accepting additional session requests for the hosted application would not violate any minimum port guarantees for the other hosted applications; and

in response to accepting the session request, assigning an endpoint to the hosted application, routing the request to the assigned endpoint, and notifying all of the other routers in the plurality of routers of the assignment.

13. The computer system of claim 12 , further comprising:

for each of the hosted applications that requires a preloaded resource on an endpoint, assigning the application to a router that will be responsible for determining whether or not the preloaded resource is loaded onto a sufficient number of endpoints to meet demand for the application, wherein, if the responsible router determines that additional endpoint capacity is needed for the application, the responsible router loads the preloaded resource onto an additional endpoint in the router's zone and notifies other routers that the endpoint has been assigned to the application.

14. The computer system of claim 13 , wherein, with respect to applications that require a preloaded resource, a hash algorithm is used to determine the application assignments for the routers.

15. The computer system of claim 12 , wherein a hash algorithm is used to determine zone assignments for the routers.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 14, 2023
From: NUANCE COMMUNICATIONS, INC.
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 065566/0013 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 21, 2014
From: YOUNG, MILAN GABRIEL; SHIPHERD, JON PETER
To: NUANCE COMMUNICATIONS, INC.
Reel/Frame 033579/0552 →