IP Library Granted Patent US 11,809,294
Granted Patent B1
US 11,809,294 · App. 17/959,177 · Granted Nov 7, 2023

Reliable map-reduce communications in a decentralized, self-organizing communication orbit of a distributed network

Inventors: Lisa Lippincott (Berkeley, CA); David Hindawi (Berkeley, CA); Orion Hindawi (Piedmont, CA); Peter Lincroft (Albany, CA)
Assignee: TANIUM INC.
G06F11/30G06F11/00H04L45/12H04L45/121G06F11/3006H04L41/0803H04L41/12H04L43/0864
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,809,294
App. No.
17/959,177
Granted
Nov 7, 2023
Kind
B1
Abstract

A first machine identifies, from among a non-static collection of machines, a respective set of forward contacts that comprises a set of machines. The set of forward contacts are distributed along the ordered sequence in the forward direction away from the respective machine in an order of increasing similarity between the respective channel number assigned to the first machine and a respective channel number assigned to each of the set of forward contacts. The first machine establishes a respective direct communication channel between the first machine and each of the set of forward contacts. The first machine sends a first query to a first forward contact and sends collected answers for the first query to at least a second forward contact that has a greater similarity to the first machine based on the respective channel numbers of the first machine and the first and second forward contacts.

Claims (70)

1. A method of organizing a non-static collection of machines into an ordered sequence in accordance with respective first addresses of the non-static collection of machines, each machine in the ordered sequence having a respective channel number that is distinct from the respective first address of said machine, and the method comprising:

at a first machine that is in the ordered sequence of the non-static collection of machines:

receiving a request for a second machine to join the ordered sequence of the non-static collection of machines; and

in response to receiving the request for the second machine to join the ordered sequence of the non-static collection of machines:

providing, to the second machine, a respective channel number that is assigned to the second machine;

sending a first query, including the respective channel number that is assigned to the second machine, to the non-static collection of machines through at least a subset of a set of forward contacts and a set of backward contacts of the first machine, wherein the set of forward contacts of the first machine includes a first set of machines distributed in a forward direction from the first machine along the ordered sequence of the non-static collection of machines, and the set of backward contacts of the first machine includes a second set of machines distributed in a backward direction from the first machine along the ordered sequence of the non-static collection of machines;

collecting answers for the first query from the non-static collection of machines, wherein the answers include respective machine addresses of a set of forward contacts of the second machine and a set of backward contacts of the second machine, wherein:

the set of forward contacts of the second machine are distributed along the ordered sequence in the forward direction away from the second machine in an order of increasing similarity between the respective channel number for the second machine and a respective channel number for each machine of the set of forward contacts of the second machine; and

the set of backward contacts of the second machine are distributed along the ordered sequence in the backward direction away from the second machine in an order of increasing similarity between the respective channel number for the second machine and a respective channel number for each machine of the set of backward contacts of the second machine; and

sending, to the second machine, the respective machine addresses of the set of forward contacts of the second machine and the set of backward contacts of the second machine, wherein the second machine establishes respective direct communication channels between the second machine and at least one of the set of forward contacts of the second machine and at least one of the set of backward contacts of the second machine.

2. The method of claim 1 , wherein the respective channel number of each machine in the ordered sequence is a string, and similarity between two machines is determined in accordance with a length of a longest initial substring on which the respective channel numbers of the two machines agree.

3. The method of claim 1 , wherein the first query is assigned a string, and a similarity between the first query and a respective machine of the non-static collection of machines is determined in accordance with a length of a longest initial substring on which the assigned string of the first query and the respective channel number of the respective machine agree.

4. The method of claim 1 , wherein the non-static collection of machines are dynamically assigned to a plurality of communication orbits based on their respective similarity to a respective query that is to be propagated along the ordered sequence, the plurality of communication orbits including a first orbit that comprises a third set of machines having a first value of similarity to the respective query and a second orbit that comprises a fourth set of machines having a second value of similarity to the respective query that is less than the first value of similarity.

5. The method of claim 4 , wherein:

for the first query, the first machine is included on each communication orbit of the plurality of communication orbits, and

the set of forward contacts of the first machine comprises at least one contact distributed on each communication orbit of the plurality of communication orbits.

6. The method of claim 4 , wherein the set of forward contacts of the first machine includes a first forward contact that is distributed on an outermost orbit of the plurality of communication orbits on which the first machine participates and a second forward contact that is distributed on an innermost orbit of the plurality of communication orbits on which the first machine participates.

7. The method of claim 4 , wherein sending the first query comprises:

sending the first query to a forward contact on the second orbit of the plurality of communication orbits; and

sending the first query to a forward contact on a third orbit of the plurality of communication orbits, wherein the third orbit comprises a third set of machines having a third value of similarity to the respective query that is less than the first value of similarity and greater than the second value of similarity.

8. The method of claim 7 , further comprising, sending at least a subset of the collected answers for the first query to a direct contact of the first machine, the direct contact comprising a machine that is assigned to an innermost orbit of the plurality of communication orbits on which the first machine participates for the first query.

9. The method of claim 8 , further comprising, at the first machine:

receiving one or more answers from a first subset of the set of backward contacts of the first machine, wherein each backward contact in the first subset of the set of backward contacts of the first machine is assigned to a respective orbit in the plurality of communication orbits;

in response to receiving the first query from an immediate backward contact in the first subset of the set of backward contacts of the first machine:

assembling the answers received from the subset of the set of backward contacts of the first machine; and

sending the assembled answers to a forward contact of the set of forward contacts of the first machine that is on the innermost orbit of the plurality of communication orbits on which the first machine participates for the first query.

10. The method of claim 4 , wherein the second orbit comprises the second set of machines that is dynamically assigned to the second orbit and the first set of machines that is dynamically assigned to the first orbit.

11. A non-transitory computer-readable storage medium, having one or more programs stored thereon, the one or more programs including instructions for organizing a non-static collection of machines into an ordered sequence in accordance with respective first addresses of the non-static collection of machines, each machine in the ordered sequence having a respective channel number that is distinct from the respective first address of said machine, wherein the instructions, when executed by one or more processors of a first machine that is in the ordered sequence of the non-static collection of machines, cause the first machine to perform operations comprising:

receiving a request for a second machine to join the ordered sequence of the non-static collection of machines; and

in response to receiving the request for the second machine to join the ordered sequence of the non-static collection of machines:

providing, to the second machine, a respective channel number that is assigned to the second machine;

sending a first query, including the respective channel number that is assigned to the second machine, to the non-static collection of machines through at least a subset of a set of forward contacts and a set of backward contacts of the first machine, wherein the set of forward contacts of the first machine includes a first set of machines distributed in a forward direction from the first machine along the ordered sequence of the non-static collection of machines, and the set of backward contacts of the first machine includes a second set of machines distributed in a backward direction from the first machine along the ordered sequence of the non-static collection of machines;

collecting answers for the first query from the non-static collection of machines, wherein the answers include respective machine addresses of a set of forward contacts of the second machine and a set of backward contacts of the second machine, wherein:

the set of forward contacts of the second machine are distributed along the ordered sequence in the forward direction away from the second machine in an order of increasing similarity between the respective channel number for the second machine and a respective channel number for each machine of the set of forward contacts of the second machine; and

the set of backward contacts of the second machine are distributed along the ordered sequence in the backward direction away from the second machine in an order of increasing similarity between the respective channel number for the second machine and a respective channel number for each machine of the set of backward contacts of the second machine; and

sending, to the second machine, the respective machine addresses of the set of forward contacts of the second machine and the set of backward contacts of the second machine, wherein the second machine establishes respective direct communication channels between the second machine and at least one of the set of forward contacts of the second machine and at least one of the set of backward contacts of the second machine.

12. The non-transitory computer-readable storage medium of claim 11 , wherein the respective channel number of each machine in the ordered sequence is a string, and similarity between two machines is determined in accordance with a length of a longest initial substring on which the respective channel numbers of the two machines agree.

13. The non-transitory computer-readable storage medium of claim 11 , wherein the first query is assigned a string, and a similarity between the first query and a respective machine of the non-static collection of machines is determined in accordance with a length of a longest initial substring on which the assigned string of the first query and the respective channel number of the respective machine agree.

14. The non-transitory computer-readable storage medium of claim 11 , wherein the non-static collection of machines are dynamically assigned to a plurality of communication orbits based on their respective similarity to a respective query that is to be propagated along the ordered sequence, the plurality of communication orbits including a first orbit that comprises a third set of machines having a first value of similarity to the respective query and a second orbit that comprises a fourth set of machines having a second value of similarity to the respective query that is less than the first value of similarity.

15. The non-transitory computer-readable storage medium of claim 14 , wherein:

for the first query, the first machine is included on each communication orbit of the plurality of communication orbits, and

the set of forward contacts of the first machine comprises at least one contact distributed on each communication orbit of the plurality of communication orbits.

16. The non-transitory computer-readable storage medium of claim 14 , wherein the set of forward contacts of the first machine includes a first forward contact that is distributed on an outermost orbit of the plurality of communication orbits on which the first machine participates and a second forward contact that is distributed on an innermost orbit of the plurality of communication orbits on which the first machine participates.

17. The non-transitory computer-readable storage medium of claim 14 , wherein sending the first query comprises:

sending the first query to a forward contact on the second orbit of the plurality of communication orbits; and

sending the first query to a forward contact on a third orbit of the plurality of communication orbits, wherein the third orbit comprises a third set of machines having a third value of similarity to the respective query that is less than the first value of similarity and greater than the second value of similarity.

18. The non-transitory computer-readable storage medium of claim 14 , wherein the second orbit comprises the second set of machines that is dynamically assigned to the second orbit and the first set of machines that is dynamically assigned to the first orbit.

19. A first machine, comprising:

one or more processors; and

memory storing one or more programs, the one or more programs including instructions for organizing a non-static collection of machines into an ordered sequence in accordance with respective first addresses of the non-static collection of machines, each machine in the ordered sequence having a respective channel number that is distinct from the respective first address of said machine, wherein the instructions, when executed by the one or more processors, cause the first machine to perform operations comprising:

while the first machine is in the ordered sequence of the non-static collection of machines:

receiving a request for a second machine to join the ordered sequence of the non-static collection of machines; and

in response to receiving the request for the second machine to join the ordered sequence of the non-static collection of machines:

providing, to the second machine, a respective channel number that is assigned to the second machine;

sending a first query, including the respective channel number that is assigned to the second machine, to the non-static collection of machines through at least a subset of a set of forward contacts and a set of backward contacts of the first machine, wherein the set of forward contacts of the first machine includes a first set of machines distributed in a forward direction from the first machine along the ordered sequence of the non-static collection of machines, and the set of backward contacts of the first machine includes a second set of machines distributed in a backward direction from the first machine along the ordered sequence of the non-static collection of machines;

collecting answers for the first query from the non-static collection of machines, wherein the answers include respective machine addresses of a set of forward contacts of the second machine and a set of backward contacts of the second machine, wherein:

the set of forward contacts of the second machine are distributed along the ordered sequence in the forward direction away from the second machine in an order of increasing similarity between the respective channel number for the second machine and a respective channel number for each machine of the set of forward contacts of the second machine; and

the set of backward contacts of the second machine are distributed along the ordered sequence in the backward direction away from the second machine in an order of increasing similarity between the respective channel number for the second machine and a respective channel number for each machine of the set of backward contacts of the second machine; and

sending, to the second machine, the respective machine addresses of the set of forward contacts of the second machine and the set of backward contacts of the second machine, wherein the second machine establishes respective direct communication channels between the second machine and at least one of the set of forward contacts of the second machine and at least one of the set of backward contacts of the second machine.

20. The first machine of claim 19 , wherein the respective channel number of each machine in the ordered sequence is a string, and similarity between two machines is determined in accordance with a length of a longest initial substring on which the respective channel numbers of the two machines agree.

21. The first machine of claim 19 , wherein the first query is assigned a string, and a similarity between the first query and a respective machine of the non-static collection of machines is determined in accordance with a length of a longest initial substring on which the assigned string of the first query and the respective channel number of the respective machine agree.

22. The first machine of claim 19 , wherein the non-static collection of machines are dynamically assigned to a plurality of communication orbits based on their respective similarity to a respective query that is to be propagated along the ordered sequence, the plurality of communication orbits including a first orbit that comprises a third set of machines having a first value of similarity to the respective query and a second orbit that comprises a fourth set of machines having a second value of similarity to the respective query that is less than the first value of similarity.

23. The first machine of claim 22 , wherein:

for the first query, the first machine is included on each communication orbit of the plurality of communication orbits, and

the set of forward contacts of the first machine comprises at least one contact distributed on each communication orbit of the plurality of communication orbits.

24. The first machine of claim 22 , wherein the set of forward contacts of the first machine includes a first forward contact that is distributed on an outermost orbit of the plurality of communication orbits on which the first machine participates and a second forward contact of the first machine that is distributed on an innermost orbit of the plurality of communication orbits on which the first machine participates.

25. The first machine of claim 22 , wherein sending the first query comprises:

sending the first query to a forward contact on the second orbit of the plurality of communication orbits; and

sending the first query to a forward contact on a third orbit of the plurality of communication orbits, wherein the third orbit comprises a third set of machines having a third value of similarity to the respective query that is less than the first value of similarity and greater than the second value of similarity.

26. The first machine of claim 22 , wherein the second orbit comprises the second set of machines that is dynamically assigned to the second orbit and the first set of machines that is dynamically assigned to the first orbit.

Continuity (4)
Continuation 15930342 · May 12, 2020
Continuation In Part 15878286 · Jan 23, 2018
Continuation 15136790 · Apr 22, 2016
Provisional Application 62152709 · Apr 24, 2015
Cited By (9)
US 12,229,032 US 12,231,457 US 12,231,467 US 12,284,204 US 12,309,239 US 12,316,486 US 12,556,623 US 12,632,357 US 12,719,916