IP Library Granted Patent US 12,093,751
Granted Patent B2
US 12,093,751 · App. 16/931,375 · Granted Sep 17, 2024

Preserving eventually consistent distributed state of multi-layer applications

Inventor: Sergey Slovetskiy (Bellevue, WA)
Assignee: T-MOBILE USA, INC.
G06F9/52G06F8/65G06F9/547
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,093,751
App. No.
16/931,375
Granted
Sep 17, 2024
Kind
B2
Abstract

A computing device operates a first thread for a first layer of a plurality of layers of an application that are operated by different threads. The computing device maintains a first parameter that is shared by the first layer of the application and a second layer of the application. The second layer is operated by a second thread that is identified by a first address. When the first parameter is locally updated at the first thread, the computing device updates a local copy of the first parameter at the first thread and providing the locally updated first parameter to the second thread by using the first address. When the first parameter is remotely updated at the second thread, the computing device receives the remotely updated first parameter and updating the local copy of the first parameter at the first thread based on the received remotely updated first parameter.

Claims (59)

1. A computer-implemented method, comprising:

operating, at a first computing device, a first thread for a first logical layer of an application stack having logical layers operating in a distributed system across threads operated by computing devices, each of the logical layers operating at a different one of the computing devices;

maintaining, in a local cache at the first computing device, one or more parameters that are shared by the first logical layer and a one or more of the other logical layers of the application stack, wherein the one or more parameters are implemented as commutative replicated data types (CRDTs);

receiving an update to a first parameter of the one or more parameters;

locally updating the first parameter at the first thread with the received update and storing the first parameter update in the local cache; and

recovering the full application stack, including:

querying a set store of parameters using set intersection operations to determine parameters that are shared by the first logical layer and other logical layers of the application stack;

receiving, from the set store in response to the query, a determination that the first parameter is shared with a second logical layer adjacent to the first logical layer in the application stack, wherein the second logical layer is operated at a second computing device by a second thread that is identified by a first address; and

propagating the first parameter update to all of the other logical layers of the application stack that maintain the first parameter, the propagating including providing, based on the determination that the first parameter is shared by the first logical layer and the second logical layer, the first parameter update to the second thread by using the first address,

wherein the set store is shared by the threads operating the logical layers;

wherein the first parameter is part of a global superset of parameters stored in the set store and formed by a union operation of all parameters maintained by all of the logical layers of the application stack; and

wherein the global superset of parameters is the global state of the application stack.

2. The computer-implemented method of claim 1 , further comprising maintaining, in the local cache at the first computing device, a second parameter of the one or more parameters, wherein the second parameter is shared by the first logical layer and a third logical layer of the application stack that is operated by a third thread at a third computing device that is identified by a second address.

3. The computer-implemented method of claim 2 , further comprising:

receiving an update to the second parameter;

locally updating the second parameter at the first thread with the received update and storing the updated second parameter in the local cache;

receiving, from the set store in response to the query, a determination that the second parameter is shared with the third logical layer of the application stack; and

propagating the second parameter update to all of the other logical layers of the application stack that maintain the second parameter, the propagating including providing, based on the determination that the second parameter is shared by the first logical layer and the third logical layer, the second parameter update to the third thread by using the second address.

4. The computer-implemented method of claim 1 , wherein the first parameter update is transmitted to a local cache of the second computing device that is operating the second thread.

5. A computing device comprising:

one or more processors; and

memory storing layer pointers, an application state cache, and a plurality of computer-executable components that are executable by the one or more processors to perform a plurality of actions, the plurality of actions comprising:

operating a first thread for a first logical layer of an application stack having logical layers operating in a distributed system across threads operated by computing devices, wherein each of the logical layers operates at a different one of the computing devices and is associated with a different address stored in the layer pointers, and the layer pointers include an up-layer address that points to an adjacent logical layer in the application stack that is above a current logical layer and a down-layer address that points to an adjacent logical layer in the application stack that is below the current logical layer;

maintaining, in the application state cache, one or more parameters that are shared by the first logical layer and one or more of the other logical layers of the application stack, wherein the one or more parameters are implemented as commutative replicated data types (CRDTs);

locally updating the first parameter at the first thread with the received update and storing the first parameter update in the application state cache; and

recovering the full application stack, including:

querying a set store of parameters using set intersection operations to determine parameters that are shared by the first logical layer and other logical layers of the application stack;

receiving, from the set store in response to the query, a determination that the first parameter is shared with a second logical layer adjacent to the first logical layer in the application stack, wherein the second logical layer is operated at a second computing device by a second thread that is identified by a first address stored in the layer pointers; and

propagating the first parameter update to all of the other logical layers of the application stack that maintain the first parameter, the propagating including providing, based on the determination that the first parameter is shared by the first logical layer and the second logical layer, the first parameter update to the second thread by using the first address,

wherein the set store is shared by the threads operating the logical layers;

wherein the first parameter is part of a global superset of parameters stored in the set store and formed by a union operation of all parameters maintained by all of the logical layers of the application stack; and

wherein the global superset of parameters is the global state of the application stack.

6. The computing device of claim 5 , wherein the plurality of actions further comprise maintaining, in the application state cache, a second parameter of the one or more parameters, wherein the second parameter is shared by the first logical layer and a third logical layer of the application stack that is operated by a third thread at a third computing device that is identified by a second address in the layer pointers.

7. The computing device of claim 6 , wherein the plurality of actions further comprise:

receiving an update to the second parameter;

locally updating the second parameter at the first thread with the received update and storing the updated second parameter in the application state cache;

receiving, from the set store in response to the query, a determination that the second parameter is shared with a third logical layer of the application stack; and

propagating the second parameter update to all of the other logical layers of the application stack that maintain the second parameter, the propagating including providing, based on the determination that the second parameter is shared by the first logical layer and the third logical layer, the second parameter update to the third thread by using the second address.

8. The computing device of claim 5 , wherein:

the first parameter update is transmitted to an application state cache of the second computing device that is operating the second thread.

9. One or more non-transitory computer-readable storage media of a computing device storing computer-executable instructions that upon execution cause one or more processors to perform acts comprising:

operating a first thread for a first logical layer of an application stack having logical layers operating in a distributed system across threads operated by computing devices, wherein each of the logical layers operates at a different one of the computing devices and is associated with a different address stored in layer pointers, and the layer pointers include an up-layer address that points to an adjacent logical layer in the application stack that is above a current logical layer and a down-layer address that points to an adjacent logical layer in the application stack that is below the current logical layer;

maintaining, in an application state cache, one or more parameters that are shared by the first logical layer and one or more other logical layers of the application stack, wherein the one or more parameters are implemented as commutative replicated data types (CRDTs);

locally updating the first parameter at the first thread with the received update and storing the first parameter update in the application state cache; and

recovering the full application stack, including:

querying a set store of parameters using set intersection operations to determine parameters that are shared by the first logical layer and other logical layers of the application stack;

receiving, from the set store in response to the query, a determination that the first parameter is shared with a second logical layer adjacent to the first logical layer in the application stack, wherein the second logical layer is operated at a second computing device by a second thread that is identified by a first address stored in the layer pointers; and

propagating the first parameter update to all of the other logical layers of the application stack that maintain the first parameter, the propagating including providing, based on the determination that the first parameter is shared by the first logical layer and the second logical layer, the first parameter update to the second thread by using the first address

wherein the set store is shared by the threads operating the logical layers;

wherein the first parameter is part of a global superset of parameters stored in the set store and formed by a union operation of all parameters maintained by all of the logical layers of the application stack; and

wherein the global superset of parameters is the global state of the application stack.

10. The one or more non-transitory computer-readable storage media of claim 9 , wherein the acts further comprise maintaining, in the application state cache, a second parameter of the one or more parameters, wherein the second parameter is shared by the first logical layer and a third logical layer of the application stack that is operated by a third thread at a third computing device that is identified by a second address in the layer pointers.

11. The one or more non-transitory computer-readable storage media of claim 10 , wherein the acts further comprise:

receiving an update to the second parameter;

locally updating the second parameter at the first thread with the received update and storing the updated second parameter in the application state cache;

receiving, from the set store in response to the query, a determination that the second parameter is shared with a third logical layer of the application stack; and

propagating the second parameter update to all of the other logical layers of the application stack that maintain the second parameter, the propagating including providing, based on the determination that the second parameter is shared by the first logical layer and the third logical layer, the second parameter update to the third thread by using the second address.

12. The one or more non-transitory computer-readable storage media of claim 9 , wherein:

the first parameter update is transmitted to an application state cache of the second computing device that is operating the second thread.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 16, 2020
From: SLOVETSKIY, SERGEY
To: T-MOBILE USA, INC.
Reel/Frame 053234/0553 →
Continuity (1)
Related Publication 20220019485A1 · Jan 20, 2022