IP Library Granted Patent US 11,038,957
Granted Patent B2
US 11,038,957 · App. 16/904,474 · Granted Jun 15, 2021

Apparatus and method for efficient, coordinated, distributed execution

Inventor: Hendrik Brower (Fair Lawn, NJ)
Assignee: Bloomberg Finance L.P.
H04L67/1051G06F11/3006H04L41/0816H04L67/10
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,038,957
App. No.
16/904,474
Granted
Jun 15, 2021
Kind
B2
Abstract

The present disclosure describes a system and method for efficient, coordinated, distributed execution. Processes are registered into a process registry which includes a table or list of processes. Processes which are determined to be no longer running are removed from the registry. Each process is configured to send a broadcast when it starts or stops. Each process periodically reads the registry, sorts the list, and uses it to determine the current master process based on an algorithm.

Claims (44)

1. A method, comprising:

determining that a particular process of a plurality of processes registered with a process registry is not running based on a message received from at least one process of the plurality of processes;

in response to determining that the particular process is not running, removing the particular process from the process registry; and

in response to removing the particular process from the process registry, selecting a master process from remaining processes registered with the process registry based on a length of time the selected master process would be the master process and a number of processes registered with the process registry according to: index=[((time+offset)/rotate period) % no. of processes].

2. The method of claim 1 , further comprising:

periodically selecting a new master process at predetermined time intervals.

3. The method of claim 1 , further comprising:

selecting a secondary master process from the process registry based on the master process.

4. The method of claim 3 , wherein selecting a secondary master process from the process registry based on the master process comprises:

calculating a secondary master process index as [(master process index+1) % no. of processes]; and

selecting the secondary master process from the process registry based on the secondary master process index.

5. The method of claim 1 , wherein the message received from the at least one process indicates that the at least one process is running or that the at least one process is not running.

6. The method of claim 1 , wherein determining that a particular process of a plurality of processes registered with a process registry is not running based on a message received from at least one process of the plurality of processes comprises:

determining that the message received from the at least one process does not include a message received from the particular process.

7. The method of claim 1 , wherein selecting a master process from remaining processes registered with the process registry is performed by the plurality of processes registered with the process registry.

8. The method of claim 1 , further comprising:

registering the plurality of processes with the process registry by associating each of the plurality of processes with an index in the process registry.

9. The method of claim 1 , wherein each of the plurality of processes registered with the process registry maintains a local copy of the process registry.

10. A non-transitory computer readable medium storing computer program instructions, which, when executed on a processor, cause the processor to perform operations comprising:

determining that a particular process of a plurality of processes registered with a process registry is not running based on a message received from at least one process of the plurality of processes;

in response to determining that the particular process is not running, removing the particular process from the process registry; and

in response to removing the particular process from the process registry, selecting a master process from remaining processes registered with the process registry based on a length of time the selected master process would be the master process and a number of processes registered with the process registry according to: index=[((time+offset)/rotate period) % no. of processes].

11. The non-transitory computer readable medium of claim 10 , the operations further comprising:

periodically selecting a new master process at predetermined time intervals.

12. The non-transitory computer readable medium of claim 10 , the operations further comprising:

selecting a secondary master process from the process registry based on the master process.

13. The non-transitory computer readable medium of claim 12 , wherein selecting a secondary master process from the process registry based on the master process comprises:

calculating a secondary master process index as [(master process index+1) % no. of processes]; and

selecting the secondary master process from the process registry based on the secondary master process index.

14. The non-transitory computer readable medium of claim 10 , wherein the message received from the at least one process indicates that the at least one process is running or that the at least one process is not running.

15. An apparatus comprising:

a processor; and

a memory to store computer program instructions, the computer program instructions when executed on the processor cause the processor to perform operations comprising:

determining that a particular process of a plurality of processes registered with a process registry is not running based on a message received from at least one process of the plurality of processes;

in response to determining that the particular process is not running, removing the particular process from the process registry; and

in response to removing the particular process from the process registry, selecting a master process from remaining processes registered with the process registry based on a length of time the selected master process would be the master process and a number of processes registered with the process registry according to: index=[((time+offset)/rotate period) % no. of processes].

16. The apparatus of claim 15 , the operations further comprising:

periodically selecting a new master process at predetermined time intervals.

17. The apparatus of claim 15 , wherein determining that a particular process of a plurality of processes registered with a process registry is not running based on a message received from at least one process of the plurality of processes comprises:

determining that the message received from the at least one process does not include a message received from the particular process.

18. The apparatus of claim 15 , wherein selecting a master process from remaining processes registered with the process registry is performed by the plurality of processes registered with the process registry.

19. The apparatus of claim 15 , the operations further comprising:

registering the plurality of processes with the process registry by associating each of the plurality of processes with an index in the process registry.

20. The apparatus of claim 15 , wherein each of the plurality of processes registered with the process registry maintains a local copy of the process registry.

Assignments (2)
SECURITY INTEREST Recorded Nov 10, 2021
From: BLOOMBERG FINANCE L.P.
To: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 058076/0214 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 17, 2020
From: BROWER, HENDRIK
To: BLOOMBERG FINANCE L.P.
Reel/Frame 052969/0104 →
Continuity (3)
Continuation 15815160 · Nov 16, 2017
Continuation 14522274 · Oct 23, 2014
Related Publication 20200322427A1 · Oct 8, 2020