IP Library › Granted Patent US 12,314,770
Granted Patent B2
US 12,314,770 · App. 17/451,709 · Granted May 27, 2025

Coordinated microservices

Inventors: Jorge Ivan Cifuentes de la Paz (Boca Raton, FL); Rodney Gallart Acosta (Pembroke Pines, FL)
G06F9/5055G06F9/5038G06F9/5077G06F11/3409G06F2201/86G06F2209/501G06F2209/503G06F2209/508
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,314,770
App. No.
17/451,709
Granted
May 27, 2025
Kind
B2
Abstract

Techniques are provided for a coordinated microservice system including a coordinator and multiple services, which interact with each other. Each of the services can have multiple execution instances, which run independently of each other. In operation, each instance of each service can use, or otherwise depend upon, one or more of the other services to perform at least some of its respective function(s). The coordinator monitors execution requests from each instance of the services to other services and calculates an available capacity of the other services upon which the requesting services depend to execute each of the execution requests based on the monitored performance metrics of the other services and level(s) of resource consumption associated with each of the execution requests. The coordinator then selects one of the execution requests based on the available capacity of the other services to service the execution requests without degrading the other services.

Claims (42)

1. A method of coordinating execution among multiple instances of a service, the method comprising:

executing a plurality of services by a computing device, the plurality of services including at least a first service and second service;

monitoring a first execution request from a first instance of the first service, the first execution request being associated with a first level of resource consumption;

monitoring a second execution request from a second instance of the first service, the second execution request being associated with a second level of resource consumption;

calculating an available capacity of the second service to execute the first execution request and the second execution request based on a performance metric of the second service, the first level of resource consumption, and the second level of resource consumption;

selecting one of the first execution request and the second execution request based on the available capacity of the second service; and

improving execution performance of the first service and the second service executing on the computing device by causing one of the first instance of the first service to execute the first execution request and the second instance of the first service to execute the second execution request based on the selection of the first execution request and the second execution request;

wherein the first and second services are microapplications.

2. The method of claim 1 , wherein calculating the available capacity of the second service is further based on a performance metric of a third service from which the second service depends to execute the first execution request, the second execution request, or both.

3. The method of claim 1 , wherein causing the first instance of the first service to execute the first execution request includes sending a first coordination command to the second instance of the first service, wherein causing the second instance of the first service to execute the second execution request includes sending a second coordination command to the first instance of the first service, and wherein the first coordination command and the second coordination command each include a command to postpone the second execution request and the first execution request, respectively.

4. The method of claim 1 , further comprising receiving, via a proxy associated with the second service, the performance metric associated with the second service; and storing the performance metric associated with the second service in a datastore prior to calculating the available capacity of the second service to execute the first execution request and the second execution request.

5. The method of claim 4 , wherein the performance metric is received at a periodic interval or in response to a request to get the performance metric from the second service.

6. The method of claim 1 , further comprising applying a pre-defined rule to the performance metric of the second service to determine whether an event has occurred, wherein one of the first execution request and the second execution request is selected based on a determination that the event has occurred.

7. The method of claim 6 , wherein the performance metric of the second service is a first performance metric, wherein the pre-defined rule is a first rule, and wherein the method further comprises applying a second pre-defined rule to a second performance metric of the second service to determine whether the event is verified, and wherein one of the first execution request and the second execution request is selected based on a determination that the event is verified.

8. A computer program product including one or more non-transitory machine-readable mediums having instructions encoded thereon that when executed by at least one processor cause a process to be carried out, the process comprising:

executing a plurality of services by a computing device, the plurality of services including at least a first service and second service;

monitoring a first execution request from a first instance of the first service, the first execution request being associated with a first level of resource consumption;

monitoring a second execution request from a second instance of the first service, the second execution request being associated with a second level of resource consumption;

calculating an available capacity of the second service to execute the first execution request and the second execution request based on a performance metric of the second service, the first level of resource consumption, and the second level of resource consumption;

selecting one of the first execution request and the second execution request based on the available capacity of the second service; and

improving execution performance of the first service and the second service executing on the computing device by causing one of the first instance of the first service to execute the first execution request and the second instance of the first service to execute the second execution request based on the selection of the first execution request and the second execution request.

9. The computer program product of claim 8 , wherein calculating the available capacity of the second service is further based on a performance metric of a third service from which the second service depends upon to execute the first execution request and/or the second execution request.

10. The computer program product of claim 8 , wherein causing the first instance of the first service to execute the first execution request includes sending a first coordination command to the second instance of the first service, wherein causing the second instance of the first service to execute the second execution request includes sending a second coordination command to the first instance of the first service, and wherein the first coordination command and the second coordination command each include a command to postpone or delay the second execution request and the first execution request, respectively.

11. The computer program product of claim 8 , the process further comprising receiving, via a proxy associated with the second service, the performance metric associated with the second service; and storing the performance metric associated with the second service in a datastore prior to calculating the available capacity of the second service to execute the first execution request and the second execution request.

12. The computer program product of claim 11 , wherein the performance metric is received at a periodic interval or in response to a request to get the performance metric from the second service.

13. The computer program product of claim 8 , the process further comprising applying a pre-defined rule to the performance metric of the second service to determine whether an event has occurred, wherein one of the first execution request and the second execution request is selected based on a determination that the event has occurred.

14. The computer program product of claim 13 , wherein the performance metric of the second service is a first performance metric, wherein the pre-defined rule is a first rule, and wherein the process further comprises applying a second pre-defined rule to a second performance metric of the second service to determine whether the event is verified, and wherein one of the first execution request and the second execution request is selected based on a determination that the event is verified.

15. A system comprising:

a storage; and

at least one processor operatively coupled to the storage, the at least one processor configured to execute instructions stored in the storage that when executed cause the at least one processor to carry out a process including:

executing a plurality of services by a computing device, the plurality of services including at least a first service and second service;

monitoring a first execution request from a first instance of the first service, the first execution request being associated with a first level of resource consumption;

monitoring a second execution request from a second instance of the first service, the second execution request being associated with a second level of resource consumption;

calculating an available capacity of the second service to execute the first execution request and the second execution request based on a performance metric of the second service, the first level of resource consumption, and the second level of resource consumption;

selecting one of the first execution request and the second execution request based on the available capacity of the second service; and

improving execution performance of the first service and the second service executing on the computing device by causing one of the first instance of the first service to execute the first execution request and the second instance of the first service to execute the second execution request based on the selection of the first execution request and the second execution request.

16. The system of claim 15 , wherein calculating the available capacity of the second service is further based on a performance metric of a third service from which the second service depends upon to execute the first execution request and/or the second execution request.

17. The system of claim 15 , wherein causing the first instance of the first service to execute the first execution request includes sending a first coordination command to the second instance of the first service, wherein causing the second instance of the first service to execute the second execution request includes sending a second coordination command to the first instance of the first service, and wherein the first coordination command and the second coordination command each include a command to postpone or delay the second execution request and the first execution request, respectively.

18. The system of claim 15 , the process further comprising receiving, via a proxy associated with the second service, the performance metric associated with the second service; and

storing the performance metric associated with the second service in a datastore prior to calculating the available capacity of the second service to execute the first execution request and the second execution request.

19. The system of claim 15 , the process further comprising applying a pre-defined rule to the performance metric of the second service to determine whether an event has occurred, wherein one of the first execution request and the second execution request is selected based on a determination that the event has occurred.

20. The system of claim 19 , wherein the performance metric of the second service is a first performance metric, wherein the pre-defined rule is a first rule, and wherein the process further comprises applying a second pre-defined rule to a second performance metric of the second service to determine whether the event is verified, and wherein one of the first execution request and the second execution request is selected based on a determination that the event is verified.

Assignments (9)
PATENT SECURITY AGREEMENT Recorded Aug 15, 2025
From: CLOUD SOFTWARE GROUP, INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 072488/0172 →
SECURITY INTEREST Recorded May 24, 2024
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 067662/0568 →
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
SECURITY INTEREST Recorded Sep 30, 2022
From: CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 062079/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 25, 2021
From: CIFUENTES DE LA PAZ, JORGE IVAN; ACOSTA, RODNEY GALLART
To: CITRIX SYSTEMS, INC.
Reel/Frame 057893/0563 →
Continuity (1)
Related Publication 20230125503A1 · Apr 27, 2023
References Cited (3)
US 20170102933A1 · Vora et al. · 2017 [cited by applicant]
US 20180262580A1 · Burton et al. · 2018 [cited by applicant]
US 20210360083A1 · Duggal et al. · 2021 [cited by applicant]