IP Library Granted Patent US 11,132,223
Granted Patent B2
US 11,132,223 · App. 16/809,192 · Granted Sep 28, 2021

Usecase specification and runtime execution to serve on-demand queries and dynamically scale resources

Inventors: Kunal Rao (Monroe, NJ); Yi Yang (Princeton, NJ); Srimat Chakradhar (Manalapan, NJ); Giuseppe Coviello (Princeton, NJ); Min Feng (Monmouth Junction, NJ); Murugan Sankaradas (Dayton, NJ)
G06F9/4881G06F9/3009G06F9/4418G06F9/485G06F9/5011
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 11,132,223
App. No.
16/809,192
Granted
Sep 28, 2021
Kind
B2
Abstract

A computer-implemented method includes obtaining a usecase specification and a usecase runtime specification corresponding to the usecase. The usecase includes a plurality of applications each being associated with a micro-service providing a corresponding functionality within the usecase for performing a task. The method further includes managing execution of the usecase within a runtime system based on the usecase and usecase runtime specifications to perform the task by serving an on-demand query and dynamically scaling resources based on the on-demand query, including using a batch helper server to employ the usecase specification to load dynamic application instances and connect the dynamic application instances to existing instances, and employ a batch helper configuration to load nodes/machines for execution of the on-demand query.

Claims (119)

1. A computer-implemented method comprising:

obtaining a usecase specification and a usecase runtime specification corresponding to the usecase, the usecase including a plurality of applications each being associated with a micro-service providing a corresponding functionality within the usecase for performing a task; and

managing execution of the usecase within a runtime system based on the usecase and usecase runtime specifications to perform the task by serving an on-demand query and dynamically scaling resources based on the on-demand query, including using a batch helper server to:

employ the usecase specification to load dynamic application instances and connect the dynamic application instances to existing instances; and

employ a batch helper configuration to load nodes/machines for execution of the on-demand query.

2. The method of claim 1 , wherein:

obtaining the usecase specification further includes specifying the usecase by specifying:

data associated with the usecase, the data associated with the usecase including a usecase identifier, a usecase name and usecase metadata;

application dependencies and application instances; and

instance connections; and

obtaining the usecase runtime specification further includes specifying usecase execution by specifying:

the usecase identifier;

an instance name;

a usecase node/machine; and

a usecase configuration.

3. The method of claim 1 , further comprising:

launching the batch helper server in a separate thread from a main thread;

setting up a handler in the main thread to terminate execution of the batch helper application instance;

putting the main thread to sleep for a predefined time interval;

determining that the batch helper application instance should be stopped after the predefined time interval by determining if the main thread has received a signal from the handler to stop the batch helper application instance; and

stopping the batch helper application instance.

4. The method of claim 1 , wherein serving the on-demand query and dynamically scaling resources based on the on-demand query using the batch helper application instance further includes:

receiving, from another application instance, a request at the batch helper server to perform an action associated with at least one dynamic instance; and

performing the action in response to the request.

5. The method of claim 4 , wherein the request includes a request to retrieve the at least one dynamic instance, and wherein performing the action in response to the request includes:

determining that the at least one dynamic instance exists; and

retrieving details of the at least one dynamic instance or all children of the at least one dynamic instance.

6. The method of claim 4 , wherein the request includes a request to generate the at least one dynamic instance, and wherein performing the action in response to the request includes:

generating the at least one dynamic instance; and

inserting a new job into a job pool; and

running any pending jobs in the job pool, including:

selecting a pending job from the job pool;

determining that at least one node/machine assigned to the batch helper application instance exists to run the pending job;

selecting the at least one node/machine assigned to the batch helper instance to run the pending job;

setting up all dynamic connections for running the pending job; and

starting a dynamic application instance for running the pending job.

7. The method of claim 4 , wherein the request includes a request to stop the at least one dynamic instance, and wherein performing the action in response to the request includes:

determining that the at least one dynamic instance exists; and

stopping all child instances of the at least one dynamic instance; and

stopping the at least one dynamic instance.

8. The method of claim 4 , wherein the request includes a request to delete the at least one dynamic instance, and wherein performing the action in response to the request includes:

determining that the at least one dynamic instance exists; and

deleting all child instances of the at least one dynamic instance; and

deleting the at least one dynamic instance.

9. The method of claim 1 , wherein managing execution of the usecase within the runtime system further includes:

building the usecase by combining the plurality of applications, including setting up connections between usecase child instances corresponding to the plurality of applications;

executing the usecase, including executing the usecase child instances to provide the micro-services;

setting up a handler for terminating execution of the usecase;

determining that the usecase should be stopped after a predetermined time interval based on a signal received by the handler;

stopping the usecase; and

in response to execution of the usecase abruptly failing, resuming operation by reusing previously existing child instances.

10. A computer program product comprising a non-transitory computer readable storage medium having program instructions embodied therewith, the program instructions executable by a computer to cause the computer to perform a method comprising:

obtaining a usecase specification and a usecase runtime specification corresponding to the usecase, the usecase including a plurality of applications each being associated with a micro-service providing a corresponding functionality within the usecase for performing a task; and

managing execution of the usecase within a runtime system based on the usecase and usecase runtime specifications to perform the task by serving an on-demand query and dynamically scaling resources based on the on-demand query, including using a batch helper server to:

employ the usecase specification to load dynamic application instances and connect the dynamic application instances to existing instances; and

employ a batch helper configuration to load nodes/machines for execution of the on-demand query.

11. The computer program product of claim 10 , wherein:

obtaining the usecase specification further includes specifying the usecase by specifying:

data associated with the usecase, the data associated with the usecase including a usecase identifier, a usecase name and usecase metadata;

application dependencies and application instances; and

instance connections; and

obtaining the usecase runtime specification further includes specifying usecase execution by specifying:

the usecase identifier;

an instance name;

a usecase node/machine; and

a usecase configuration.

12. The computer program product of claim 10 , wherein the method further includes:

launching the batch helper server in a separate thread from a main thread;

setting up a handler in the main thread to terminate execution of the batch helper application instance;

putting the main thread to sleep for a predefined time interval;

determining that the batch helper application instance should be stopped after the predefined time interval by determining if the main thread has received a signal from the handler to stop the batch helper application instance; and

stopping the batch helper application instance.

13. The computer program product of claim 10 , wherein serving the on-demand query and dynamically scaling resources based on the on-demand query using the batch helper application instance further includes:

receiving, from another application instance, a request at the batch helper server to perform an action associated with at least one dynamic instance; and

performing the action in response to the request.

14. The computer program product of claim 13 , wherein the request includes a request to retrieve the at least one dynamic instance, and wherein performing the action in response to the request includes:

determining that the at least one dynamic instance exists; and

retrieving details of the at least one dynamic instance or all children of the at least one dynamic instance.

15. The computer program product of claim 13 , wherein the request includes a request to generate the at least one dynamic instance, and wherein performing the action in response to the request includes:

generating the at least one dynamic instance; and

inserting a new job into a job pool; and

running any pending jobs in the job pool, including:

selecting a pending job from the job pool;

determining that at least one node/machine assigned to the batch helper application instance exists to run the pending job;

selecting the at least one node/machine assigned to the batch helper instance to run the pending job;

setting up all dynamic connections for running the pending job; and

starting a dynamic application instance for running the pending job.

16. The computer program product of claim 13 , wherein the request includes a request to stop the at least one dynamic instance, and wherein performing the action in response to the request includes:

determining that the at least one dynamic instance exists; and

stopping all child instances of the at least one dynamic instance; and

stopping the at least one dynamic instance.

17. The computer program product of claim 13 , wherein the request includes a request to delete the at least one dynamic instance, and wherein performing the action in response to the request includes:

determining that the at least one dynamic instance exists; and

deleting all child instances of the at least one dynamic instance; and

deleting the at least one dynamic instance.

18. The computer program product of claim 9 , wherein managing execution of the usecase within the runtime system further includes:

building the usecase by combining the plurality of applications, including setting up connections between usecase child instances corresponding to the plurality of applications;

executing the usecase, including executing the usecase child instances to provide the micro-services;

setting up a handler for terminating execution of the usecase;

determining that the usecase should be stopped after a predetermined time interval based on a signal received by the handler;

stopping the usecase; and

in response to execution of the usecase abruptly failing, resuming operation by reusing previously existing child instances.

19. A system comprising:

a memory device for storing program code; and

at least one processor device operatively coupled to a memory device and configured to execute program code stored on the memory device to:

obtain a usecase specification and a usecase runtime specification corresponding to the usecase, the usecase including a plurality of applications each being associated with a micro-service providing a corresponding functionality within the usecase for performing a task; and

manage execution of the usecase within a runtime system based on the usecase and usecase runtime specifications to perform the task by serving an on-demand query and dynamically scaling resources based on the on-demand query by using a batch helper server to:

employ the usecase specification to load dynamic application instances and connect the dynamic application instances to existing instances; and

employ a batch helper configuration to load nodes/machines for execution of the on-demand query.

20. The system of claim 19 , wherein:

the at least one processor device is further configured to execute program code stored on the memory device to:

launch the batch helper server in a separate thread from a main thread;

set up a handler in the main thread to terminate execution of the batch helper application instance;

put the main thread to sleep for a predefined time interval;

determine that the batch helper application instance should be stopped after the predefined time interval by determining if the main thread has received a signal from the handler to stop the batch helper application instance; and

stopping the batch helper application instance; and

the at least one processor device is further configured to serve the on-demand query and dynamically scale resources based on the on-demand query using the batch helper application instance by:

receiving, from another application instance, a request at the batch helper server to perform an action associated with at least one dynamic instance, the request including a request selected from the group consisting of: retrieve the at least one dynamic instance, generate the at least one dynamic instance, stop the at least one dynamic instance, and delete the at least one dynamic instance; and

performing the action in response to the request.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 20, 2021
From: NEC LABORATORIES AMERICA, INC.
To: NEC CORPORATION
Reel/Frame 057238/0090 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 4, 2020
From: RAO, KUNAL; YANG, YI; CHAKRADHAR, SRIMAT; COVIELLO, GIUSEPPE; FENG, MIN; SANKARADAS, MURUGAN
To: NEC LABORATORIES AMERICA, INC.
Reel/Frame 052015/0958 →