IP Library Granted Patent US 9,910,697
Granted Patent B2
US 9,910,697 · App. 15/284,957 · Granted Mar 6, 2018

Fault-tolerant and highly-available configuration of distributed services

Inventor: Greg DeArment (Palo Alto, CA)
Assignee: Palantir Technologies Inc.
G06F9/48G06F3/065G06F3/067G06F3/0619G06F3/0629G06F9/4806G06F9/4843G06F9/4881G06F9/4887G06F9/50G06F9/5005G06F9/5027G06F9/5038
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 9,910,697
App. No.
15/284,957
Granted
Mar 6, 2018
Kind
B2
Abstract

Fault-tolerant and highly available configuration of distributed services including a computer-implemented method for distributed task orchestration. The method includes setting a watch on a first key in a first replica of a distributed configuration store and setting a value of a second key in a second replica of the distributed configuration store where the value of the second key indicates that a first sub-task of a distributed task is successfully complete. The value of the second key is received based on the watch set on the first key and execution of the second sub-tasks is initiated based on receiving the value of the second key. Also disclosed are techniques for service lifecycle management.

Claims (72)

1. A method for distributed task orchestration, the method comprising:

setting a watch on a first key in a first replica of a distributed configuration store;

setting a value of a second key in a second replica of the distributed configuration store, the value of the second key indicating that a first sub-task of a distributed task is successfully complete;

wherein the second replica comprises the first key and the second key;

wherein the value of the second key set in the second replica is replicated from the second replica to the first replica based at least in part on a consensus protocol;

wherein the first replica comprises the first key and the second key;

wherein the first replica and the second replica are stored at different hosts;

based, at least in part, on the watch set on the first key, receiving the value of the second key from the first replica; and

based, at least in part, on the receiving the value of the second key from the first replica, initiating execution of a second sub-task of the distributed task that is dependent on successful completion of the first sub-task.

2. The method of claim 1 , wherein the watch set of the first key is a forward watch.

3. The method of claim 1 , wherein:

the first replica is stored at a first host;

the second replica is stored at a second host that is not the first host;

the setting the watch on the first key, the receiving the value of the second key, and the initiating the execution of the second sub-task are performed at the first host; and

the setting the value of the second key is performed at the second host.

4. The method of claim 1 , wherein the setting the value of the second key is based, at least in part, on successfully completing execution of the first sub-task.

5. The method of claim 1 , further comprising:

based, at least in part, on task dependency information stored in the first replica, determining that initiating execution of the second sub-task is dependent on successful completion of the first sub-task.

6. One or more non-transitory computer-readable media storing one or more programs for execution by one or more processors, the one or more programs comprising instructions for:

setting a watch on a first key in a first replica of a distributed configuration store;

setting a value of a second key in a second replica of the distributed configuration store, the value of the second key indicating that a first sub-task of a distributed task is successfully complete;

wherein the second replica comprises the first key and the second key;

wherein the value of the second key set in the second replica is replicated from the second replica to the first replica based at least in part on a consensus protocol;

wherein the first replica comprises the first key and the second key;

wherein the first replica and the second replica are stored at different hosts;

based, at least in part, on the watch set on the first key, receiving the value of the second key from the first replica; and

based, at least in part, on the receiving the value of the second key from the first replica, initiating execution of a second sub-task of the distributed task that is dependent on successful completion of the first sub-task.

7. The one or more non-transitory computer-readable media of claim 6 , wherein the watch set of the first key is a forward watch.

8. The one or more non-transitory computer-readable media of claim 6 , wherein:

the first replica is stored at a first host;

the second replica is stored at a second host that is not the first host;

the setting the watch on the first key, the receiving the value of the second key, and the initiating the execution of the second sub-task are performed at the first host; and

the setting the value of the second key is performed at the second host.

9. The one or more non-transitory computer-readable media of claim 6 , wherein the setting the value of the second key is based, at least in part, on successfully completing execution of the first sub-task.

10. The one or more non-transitory computer-readable media of claim 6 , the one or more programs further comprising instructions for:

based, at least in part, on task dependency information stored in the first replica, determining that initiating execution of the second sub-task is dependent on successful completion of the first sub-task.

11. A system, comprising:

one or more processors;

one or more storage media storing one or more programs for execution by the one or more processors, the one or more programs comprising instructions for:

setting a watch on a first key in a first replica of a distributed configuration store;

setting a value of a second key in a second replica of the distributed configuration store, the value of the second key indicating that a first sub-task of a distributed task is successfully complete;

wherein the second replica comprises the first key and the second key;

wherein the value of the second key set in the second replica is replicated from the second replica to the first replica based at least in part on a consensus protocol;

wherein the first replica comprises the first key and the second key;

wherein the first replica and the second replica are stored at different hosts;

based, at least in part, on the watch set on the first key, receiving the value of the second key from the first replica; and

based, at least in part, on the receiving the value of the second key from the first replica, initiating execution of a second sub-task of the distributed task that is dependent on successful completion of the first sub-task.

12. The system of claim 11 , wherein the watch set of the first key is a forward watch.

13. The system of claim 11 , wherein:

the first replica is stored at a first host;

the second replica is stored at a second host that is not the first host;

the setting the watch on the first key, the receiving the value of the second key, and the initiating the execution of the second sub-task are performed at the first host; and

the setting the value of the second key is performed at the second host.

14. The system of claim 11 , wherein the setting the value of the second key is based, at least in part, on successfully completing execution of the first sub-task.

15. The system of claim 11 , the one or more programs further comprising instructions for:

based, at least in part, on task dependency information stored in the first replica, determining that initiating execution of the second sub-task is dependent on successful completion of the first sub-task.

16. The system of claim 11 , the one or more programs further comprising instructions for:

setting a watch on a third key in the second replica;

based, at least in part, on successful completion of the second sub-task, setting a value of a fourth key in the first replica;

based, at least in part, on the watch set on the third key, receiving the value of the fourth key; and

based, at least in part, on the receiving the value of the fourth key, initiating execution of a third sub-task of the distributed task that is dependent on successful completion of the second sub-task.

17. The system of claim 11 , wherein:

the first replica is stored at a first host;

the second replica is stored at a second host that is not the first host;

the one or more programs further comprise instructions for:

performing the setting the watch on the first key in the first replica at the first host;

performing the setting the value of the second key in the second replica at the second host;

performing the receiving the value of the second key at the first host; and

performing the initiating execution of the second sub-task at the first host.

18. The system of claim 11 , wherein the receiving the value of the second key is based, at least in part, on a consensus protocol.

19. The system of claim 11 , the one or more programs further comprising instructions for:

setting a value of a third key in the first replica based, at least in part, successful completion of the second sub-task, the value of the third key indicating that the second sub-task completed successfully.

Assignments (8)
ASSIGNMENT OF INTELLECTUAL PROPERTY SECURITY AGREEMENTS Recorded Jul 3, 2022
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: WELLS FARGO BANK, N.A.
Reel/Frame 060572/0640 →
SECURITY INTEREST Recorded Jul 3, 2022
From: PALANTIR TECHNOLOGIES INC.
To: WELLS FARGO BANK, N.A.
Reel/Frame 060572/0506 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ERRONEOUSLY LISTED PATENT BY REMOVING APPLICATION NO. 16/832267 FROM THE RELEASE OF SECURITY INTEREST PREVIOUSLY RECORDED ON REEL 052856 FRAME 0382. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Aug 26, 2021
From: ROYAL BANK OF CANADA
To: PALANTIR TECHNOLOGIES INC.
Reel/Frame 057335/0753 →
SECURITY INTEREST Recorded Jun 4, 2020
From: PALANTIR TECHNOLOGIES INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 052856/0817 →
RELEASE OF SECURITY INTEREST Recorded Jun 4, 2020
From: ROYAL BANK OF CANADA
To: PALANTIR TECHNOLOGIES INC.
Reel/Frame 052856/0382 →
SECURITY INTEREST Recorded Jan 27, 2020
From: PALANTIR TECHNOLOGIES INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS ADMINISTRATIVE AGENT
Reel/Frame 051713/0149 →
SECURITY INTEREST Recorded Jan 27, 2020
From: PALANTIR TECHNOLOGIES INC.
To: ROYAL BANK OF CANADA, AS ADMINISTRATIVE AGENT
Reel/Frame 051709/0471 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 10, 2017
From: DEARMENT, GREG; ELLIOT, MARK; YU, JONATHAN; PAEK, JON; CHEN, PHILLIP; TOTH, BRIAN; TOLNAY, DAVID; ROTHFUS, DANIEL; MOYLAN, BRADLEY
To: PALANTIR TECHNOLOGIES INC.
Reel/Frame 043828/0550 →
Continuity (3)
Provisional Application 62241024 · Oct 13, 2015
Provisional Application 62355504 · Jun 28, 2016
Related Publication 20170285981A1 · Oct 5, 2017