IP Library Granted Patent US 12,333,332
Granted Patent B1
US 12,333,332 · App. 18/112,787 · Granted Jun 17, 2025

Application hosting in a distributed application execution system

Inventors: Kenneth Ashcraft (Palo Alto, CA); Jon P. McAlister (Millbrae, CA); Kevin A. Gibbs (San Francisco, CA); Ryan C. Barrett (Palo Alto, CA)
Assignee: Google LLC
G06F9/48G06F9/445G06F9/44505G06F9/5016H04L41/0213H04L65/1063
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 12,333,332
App. No.
18/112,787
Granted
Jun 17, 2025
Kind
B1
Abstract

In an application execution system having a plurality of application servers, each application server stores a plurality of applications, and has computational resources for executing applications in response to received requests. Each application server also includes instructions for loading a respective application into volatile storage and executing the application in response to a request from a client, and for returning a result. A generic application instance may be cloned, creating a pool of generic application instance clones that can be loaded with code for a requested application to produce an application instance. The application instance can then be stored in a cache to be used for a future application request.

Claims (33)

1. A front end server, comprising:

memory; and

one or more processors configured to:

receive a request for application execution, wherein the request is received from a client for execution of a specific application;

access information from a shared memory, wherein the information is related to instances of the specific application loaded in volatile memory of a cluster of application servers;

determine a particular application server, of the cluster of application servers interfacing with the front end server, to which the request is to be routed based at least in part on the information from the shared memory; and

transmit the request to the particular application server.

2. The front end server of claim 1 , wherein determining the particular application server comprises identifying each application server of the cluster of application servers has a copy of the specific application in its local library.

3. The front end server of claim 1 , wherein determining the particular application server to which the request is to be routed comprises performing one or more load balancing operations.

4. The front end server of claim 3 , wherein the one or more load balancing operations comprises selecting an application server meeting a criteria, the criteria comprising the lowest load or a load below a predefined threshold.

5. The front end server of claim 3 , wherein the one or more load balancing operations comprises:

determining a number of instances of the application loaded in volatile memory of each of the application servers; and

sending the request to an application server having one or more loaded instances of the application and also meeting predefined load criteria.

6. The front end server of claim 3 , wherein the one or more processors are configured to routes requests based on current and historical load information.

7. The front end server of claim 6 , wherein the front end server has observed the current and historical load information directly.

8. The front end server of claim 1 , wherein the memory stores a distribution map and determining the particular application server is based on the distribution map.

9. The front end server of claim 8 , wherein the memory stores a respective record for each application to which the front-end server is configured to route application execution requests.

10. The front end server of claim 1 , wherein the one or more processors are configured to monitor status of application instances and store the status in cache.

11. A method, comprising:

receiving, at a front end server, a request for application execution, wherein the request is received from a client for execution of a specific application;

accessing, by the front end server, information from a shared memory, wherein the information is related to instances of the specific application loaded in volatile memory a cluster of application servers;

determining, at the front end server, a particular application server of the cluster of application servers interfacing with the front end server to which the request is to be routed based at least in part on the information from the shared memory; and

transmitting, by the front end server, the request to the particular application server.

12. The method of claim 11 , wherein determining the particular application server comprises identifying whether each application server of the cluster of application servers has a copy of the specific application in its local library.

13. The method of claim 11 , wherein determining the particular application server to which the request is to be routed comprises performing one or more load balancing operations.

14. The method of claim 13 , wherein the one or more load balancing operations comprises selecting an application server meeting a criteria, the criteria comprising the lowest load or a load below a predefined threshold.

15. The method of claim 13 , wherein the one or more load balancing operations comprises:

determining a number of instances of the application loaded in volatile memory of each of the application servers; and

sending the request to an application server having one or more loaded instances of the application and also meeting predefined load criteria.

16. The method of claim 13 , wherein selecting the particular application server is based on current and historical load information.

17. The method of claim 16 , further comprising directly observing, by the front end server, the current and historical load information.

18. The method of claim 11 , wherein determining the particular application server is based on a distribution map stored at the front end server.

19. The method of claim 11 , further comprising monitoring a status of application instances and store the status in cache.

Assignments (2)
CHANGE OF NAME Recorded Mar 3, 2023
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 062953/0874 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 24, 2023
From: ASHCRAFT, KENNETH; MCALISTER, JON P.; GIBBS, KEVIN A.; BARRETT, RYAN C.
To: GOOGLE INC.
Reel/Frame 062797/0074 →
Continuity (7)
Continuation 17350653 · Jun 17, 2021
Continuation 16727471 · Dec 26, 2019
Continuation 15474321 · Mar 30, 2017
Continuation 14468135 · Aug 25, 2014
Continuation 13466061 · May 7, 2012
Continuation 13212142 · Aug 17, 2011
Continuation 12331351 · Dec 9, 2008
References Cited (57)
US 5469545A · Vanbuskirk et al. · 1995 [cited by applicant]
US 6801927B1 · Smith et al. · 2004 [cited by applicant]
US 7475197B1 · Bouge et al. · 2009 [cited by applicant]
US 7539631B1 · El-Haj · 2009 [cited by applicant]
US 7624168B2 · Kim et al. · 2009 [cited by applicant]
US 7634646B2 · Fujimori et al. · 2009 [cited by applicant]
US 7669026B2 · Boss et al. · 2010 [cited by applicant]
US 7685597B1 · Czajkowski et al. · 2010 [cited by applicant]
US 7788544B2 · Allen et al. · 2010 [cited by applicant]
US 7877482B1 · Ashcraft et al. · 2011 [cited by applicant]
US 8005950B1 · Ashcraft et al. · 2011 [cited by applicant]
US 8015272B2 · Yoshiuchi et al. · 2011 [cited by applicant]
US 8161475B2 · Araujo, Jr. et al. · 2012 [cited by applicant]
US 8195798B2 · Ashcraft et al. · 2012 [cited by applicant]
US 8312425B2 · Hepper et al. · 2012 [cited by applicant]
US 8494520B2 · Foottit et al. · 2013 [cited by applicant]
US 8819238B2 · Ashcraft et al. · 2014 [cited by applicant]
US 11068301B1 · Ashcraft et al. · 2021 [cited by applicant]
US 11593152B1 · Ashcraft · 2023 [cited by examiner]
US 20020055984A1 · Chang et al. · 2002 [cited by applicant]
US 20030217077A1 · Schwartz et al. · 2003 [cited by applicant]
US 20040003347A1 · Saidenberg et al. · 2004 [cited by applicant]
US 20040111725A1 · Srinivasan · 2004 [cited by examiner]
US 20040193574A1 · Suzuki · 2004 [cited by applicant]
US 20040267897A1 · Hill et al. · 2004 [cited by applicant]
US 20050015804A1 · LaJoie et al. · 2005 [cited by applicant]
US 20050021917A1 · Mathur et al. · 2005 [cited by applicant]
US 20050055435A1 · Gbadegesin et al. · 2005 [cited by applicant]
US 20050097132A1 · Cochran et al. · 2005 [cited by applicant]
US 20050149940A1 · Calinescu et al. · 2005 [cited by applicant]
US 20050177832A1 · Chew · 2005 [cited by applicant]
US 20050179918A1 · Kurumisawa et al. · 2005 [cited by applicant]
US 20050193115A1 · Chellis et al. · 2005 [cited by applicant]
US 20050198102A1 · Hahn et al. · 2005 [cited by applicant]
US 20060031165A1 · Nave et al. · 2006 [cited by applicant]
US 20060059156A1 · Janes et al. · 2006 [cited by applicant]
US 20060075101A1 · Anerousis et al. · 2006 [cited by applicant]
US 20060179061A1 · D'Souza et al. · 2006 [cited by applicant]
US 20060190602A1 · Canali et al. · 2006 [cited by applicant]
US 20070112785A1 · Murphy et al. · 2007 [cited by applicant]
US 20070143702A1 · Maggi · 2007 [cited by applicant]
US 20070174839A1 · Takahashi et al. · 2007 [cited by applicant]
US 20070208866A1 · Yaffe · 2007 [cited by examiner]
US 20080034160A1 · Neiman et al. · 2008 [cited by applicant]
US 20080082955A1 · Andreessen et al. · 2008 [cited by applicant]
US 20080091902A1 · Lee · 2008 [cited by applicant]
US 20080172677A1 · Tripathi et al. · 2008 [cited by applicant]
US 20080209447A1 · Moore et al. · 2008 [cited by applicant]
US 20080244600A1 · Wong et al. · 2008 [cited by applicant]
US 20080307438A1 · Creamer et al. · 2008 [cited by applicant]
US 20090106424A1 · Safari et al. · 2009 [cited by applicant]
US 20090117889A1 · Varanda · 2009 [cited by applicant]
US 20100043016A1 · Anzai · 2010 [cited by applicant]
US 20100114705A1 · Hoyle · 2010 [cited by applicant]
US 20110225123A1 · D'Souza et al. · 2011 [cited by applicant]
US 20120173734A1 · Kimbrel et al. · 2012 [cited by applicant]
US 20140040343A1 · Nickolov et al. · 2014 [cited by applicant]