IP Library Granted Patent US 12,026,512
Granted Patent B2
US 12,026,512 · App. 16/810,169 · Granted Jul 2, 2024

Microservice data item storage and retrieval using generation-based cache

Inventor: Dominique Prunier (Montreal, CA)
Assignee: EMC IP Holding Company LLC
G06F9/30047G06F9/321G06F9/3856G06F9/546G06F12/0808
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,026,512
App. No.
16/810,169
Granted
Jul 2, 2024
Kind
B2
Abstract

Techniques are provided for microservice configuration information retrieval and storage using a generation-based cache. One method comprises obtaining, by a first microservice, a data item from a second microservice with a corresponding generation counter; maintaining, by the first microservice, the data item in a cache with the corresponding generation counter; invalidating, by the first microservice, one or more entries in the cache having a lower generation counter value than a current generation counter; and in response to a request for the data item, performing, by the first microservice: processing the requested data item, if the requested data item is in the cache after the invalidation; and if the requested data item is not in the cache after the invalidation: (i) retrieving the requested data item from the second microservice, (ii) processing the retrieved data item and (iii) placing the retrieved requested data item in the cache with a corresponding generation counter value.

Claims (41)

1. A method, comprising:

obtaining, by a first microservice of a software application, at least one data item, from a second microservice of the software application, with a corresponding generation counter for a plurality of data items comprising the at least one data item, wherein the generation counter comprises a value that is incremented for each update of the plurality of data items, wherein the obtaining comprises the first microservice issuing a remote call to the second microservice to retrieve the at least one data item, wherein the first microservice comprises a consumer microservice and the second microservice comprises a supplier microservice that manages the at least one data item needed by the first microservice to perform one or more tasks, wherein the obtaining the at least one data item comprises obtaining a first subset of the plurality of data items with the corresponding generation counter for the plurality of data items and wherein the generation counter value is incremented for each update to one or more data items in the first subset of the plurality of data items;

maintaining, by the first microservice, each data item in the first subset of the plurality of data items in a cache of the first microservice, when the first subset of the plurality of data items is obtained with a respective copy of the corresponding generation counter for the plurality of data items;

invalidating, by the first microservice, one or more entries in the cache having a lower generation counter value than a current generation counter provided by the second microservice, wherein the invalidating the one or more entries in the cache having the lower generation counter value than the current generation counter comprises invalidating a second subset of the data items within the first subset of the plurality of data items comprising the at least one data item; and

in response to a request for the at least one data item, performing the following steps, by the first microservice:

processing the requested at least one data item, if the requested at least one data item is in the cache after the invalidation; and

if the requested at least one data item is not in the cache after the invalidation: (i) retrieving the requested at least one data item from the second microservice, (ii) processing the retrieved at least one data item and (iii) placing the retrieved at least one requested data item in the cache with a corresponding generation counter value from the second microservice;

wherein the method is performed by at least one processing device comprising a processor coupled to a memory.

2. The method of claim 1 , wherein the second microservice comprises a data item retrieval endpoint to retrieve the at least one data item in response to the first microservice retrieving the requested at least one data item from the second microservice.

3. The method of claim 2 , wherein the data item retrieval endpoint provides each data item in the at least one data item to the first microservice with the corresponding generation counter value.

4. The method of claim 1 , wherein the second microservice increments the generation counter for each update to the plurality of data items comprising the at least one data item.

5. The method of claim 1 , wherein the invalidating further comprises obtaining the current generation counter from a generation counter retrieval endpoint of the second microservice.

6. The method of claim 1 , wherein the invalidating one or more entries in the cache having the lower generation counter value than the current generation counter further comprises evaluating a retrieval time of the current generation counter with respect to one or more freshness criteria and updating the current generation counter responsive to the one or more freshness criteria not being satisfied.

7. The method of claim 1 , wherein the plurality of data items comprises a plurality of configuration data items.

8. The method of claim 1 , wherein the plurality of data items comprises one or more of data objects and data lists.

9. An apparatus comprising:

at least one processing device comprising a processor coupled to a memory;

the at least one processing device being configured to implement the following steps:

obtaining, by a first microservice of a software application, at least one data item, from a second microservice of the software application, with a corresponding generation counter for a plurality of data items comprising the at least one data item, wherein the generation counter comprises a value that is incremented for each update of the plurality of data items, wherein the obtaining comprises the first microservice issuing a remote call to the second microservice to retrieve the at least one data item, wherein the first microservice comprises a consumer microservice and the second microservice comprises a supplier microservice that manages the at least one data item needed by the first microservice to perform one or more tasks, wherein the obtaining the at least one data item comprises obtaining a first subset of the plurality of data items with the corresponding generation counter for the plurality of data items and wherein the generation counter value is incremented for each update to one or more data items in the first subset of the plurality of data items;

maintaining, by the first microservice, each data item in the first subset of the plurality of data items in a cache of the first microservice, when the first subset of the plurality of data items is obtained with a respective copy of the corresponding generation counter for the plurality of data items;

invalidating, by the first microservice, one or more entries in the cache having a lower generation counter value than a current generation counter provided by the second microservice, wherein the invalidating the one or more entries in the cache having the lower generation counter value than the current generation counter comprises invalidating a second subset of the data items within the first subset of the plurality of data items comprising the at least one data item; and

in response to a request for the at least one data item, performing the following steps, by the first microservice:

processing the requested at least one data item, if the requested at least one data item is in the cache after the invalidation; and

if the requested at least one data item is not in the cache after the invalidation: (i) retrieving the requested at least one data item from the second microservice, (ii) processing the retrieved at least one data item and (iii) placing the retrieved at least one requested data item in the cache with a corresponding generation counter value from the second microservice.

10. The apparatus of claim 9 , wherein the second microservice comprises a data item retrieval endpoint to retrieve the at least one data item in response to the first microservice retrieving the requested at least one data item from the second microservice.

11. The apparatus of claim 10 , wherein the data item retrieval endpoint provides each data item in the at least one data item to the first microservice with the corresponding generation counter value.

12. The apparatus of claim 9 , wherein the second microservice increments the generation counter for each update to the plurality of data items comprising the at least one data item.

13. The apparatus of claim 9 , wherein the invalidating further comprises obtaining the current generation counter from a generation counter retrieval endpoint of the second microservice.

14. The apparatus of claim 9 , wherein the invalidating one or more entries in the cache having the lower generation counter value than the current generation counter further comprises evaluating a retrieval time of the current generation counter with respect to one or more freshness criteria and updating the current generation counter responsive to the one or more freshness criteria not being satisfied.

15. A non-transitory processor-readable storage medium having stored therein program code of one or more software programs, wherein the program code when executed by at least one processing device causes the at least one processing device to perform the following steps:

obtaining, by a first microservice of a software application, at least one data item, from a second microservice of the software application, with a corresponding generation counter for a plurality of data items comprising the at least one data item, wherein the generation counter comprises a value that is incremented for each update of the plurality of data items, wherein the obtaining comprises the first microservice issuing a remote call to the second microservice to retrieve the at least one data item, wherein the first microservice comprises a consumer microservice and the second microservice comprises a supplier microservice that manages the at least one data item needed by the first microservice to perform one or more tasks, wherein the obtaining the at least one data item comprises obtaining a first subset of the plurality of data items with the corresponding generation counter for the plurality of data items and wherein the generation counter value is incremented for each update to one or more data items in the first subset of the plurality of data items;

maintaining, by the first microservice, each data item in the first subset of the plurality of data items in a cache of the first microservice, when the first subset of the plurality of data items is obtained with a respective copy of the corresponding generation counter for the plurality of data items;

invalidating, by the first microservice, one or more entries in the cache having a lower generation counter value than a current generation counter provided by the second microservice, wherein the invalidating the one or more entries in the cache having the lower generation counter value than the current generation counter comprises invalidating a second subset of the data items within the first subset of the plurality of data items comprising the at least one data item; and

in response to a request for the at least one data item, performing the following steps, by the first microservice:

processing the requested at least one data item, if the requested at least one data item is in the cache after the invalidation; and

if the requested at least one data item is not in the cache after the invalidation: (i) retrieving the requested at least one data item from the second microservice, (ii) processing the retrieved at least one data item and (iii) placing the retrieved at least one requested data item in the cache with a corresponding generation counter value from the second microservice.

16. The non-transitory processor-readable storage medium of claim 15 , wherein the second microservice comprises a data item retrieval endpoint to retrieve the at least one data item in response to the first microservice retrieving the requested at least one data item from the second microservice.

17. The non-transitory processor-readable storage medium of claim 16 , wherein the data item retrieval endpoint provides each data item in the at least one data item to the first microservice with the corresponding generation counter value.

18. The non-transitory processor-readable storage medium of claim 15 , wherein the second microservice increments the generation counter for each update to the plurality of data items comprising the at least one data item.

19. The non-transitory processor-readable storage medium of claim 15 , wherein the invalidating further comprises obtaining the current generation counter from a generation counter retrieval endpoint of the second microservice.

20. The non-transitory processor-readable storage medium of claim 15 , wherein the invalidating further comprises evaluating a retrieval time of the current generation counter with respect to one or more freshness criteria and updating the current generation counter responsive to the one or more freshness criteria not being satisfied.

Assignments (13)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052851/0081) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 060436/0441 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052851/0917) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 060436/0509 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052852/0022) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 060436/0582 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053311/0169) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 060438/0742 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST AT REEL 052771 FRAME 0906 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 058001/0298 →
SECURITY INTEREST Recorded Jun 5, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052851/0081 →
SECURITY INTEREST Recorded Jun 5, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052851/0917 →
SECURITY INTEREST Recorded Jun 5, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052852/0022 →
SECURITY INTEREST Recorded Jun 5, 2020
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 053311/0169 →
SECURITY AGREEMENT Recorded May 28, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 052771/0906 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 5, 2020
From: PRUNIER, DOMINIQUE
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 052028/0655 →
Continuity (1)
Related Publication 20210279057A1 · Sep 9, 2021