NODE-TO-NODE DATA DISTRIBUTION
Node-to-Node data distribution is described herein. A node may receive a set of peer nodes from a collection authority node that is managing a collection. The node and the set of peer nodes are members of the collection. The node may select a subset of peer nodes from the set of peer nodes. The node may attempt to establish communications with each of the subset of peer nodes, connected peers being those peers where the attempt was successful. The node may synchronize an event stream with each connected peer.
1 . At least one machine readable medium that is not a transitory propagating signal, the machine readable medium including instructions that, when executed by hardware of a node, cause the node to perform operations comprising:
receiving a set of peer nodes from a collection authority node managing a collection, the node and the set of peer nodes being members of the collection;
selecting a subset of peer nodes from the set of peer nodes;
attempting to establish communications with each of the subset of peer nodes, wherein connected peers include peers from the subset of peer nodes where the attempt to establish communications was successful; and
synchronizing an event stream with at least one connected peer.
2 . The machine readable medium of claim 1 , wherein the set of peer nodes is ordered, and wherein the subset of peer nodes is selected based on the order of the set of peer nodes.
3 . The machine readable medium of claim 2 , wherein the set of peer nodes is ordered by a connectivity characteristic.
4 . The machine readable medium of claim 3 , wherein the connectivity characteristic is at least one of network bandwidth, network performance, cost per byte transferred, latency, power source, power remaining, processing power, storage capacity, or proximity to the node.
5 . The machine readable medium of claim 4 , wherein proximity to the node is based on network type, and wherein a local area network (LAN) network type is assigned a high order, wherein the LAN network type is local to the node.
6 . The machine readable medium of claim 2 , wherein the set of peer nodes is ordered by an implemented feature set defining features of the nodes.
7 . The machine readable medium of claim 2 , wherein the set of peer nodes are ordered by the collection authority node.
8 . The machine readable medium of claim 7 , wherein an order of a peer node in the set of peer nodes is denoted by a unique identification (ID), and wherein being selected based on their order includes the node comparing its unique ID to those of the set of peer nodes.
9 . The machine readable medium of claim 8 , wherein comparing the unique ID of the node to those of the set of peer nodes includes splitting the set of peer nodes at the unique ID of the node, the splitting resulting in an upper half and a lower half, the upper half including peer nodes with a unique ID greater than the unique ID of the node and the lower half including peer nodes with a unique ID lower than the unique ID of the node.
10 . The machine readable medium of claim 1 , wherein the operations further comprise sending a connection message to the collection authority node, and wherein the set of peer nodes is received in response to the connection message.
11 . The machine readable medium of claim 10 , wherein the connection message includes connectivity characteristics of the node.
12 . The machine readable medium of claim 11 , wherein the operations further comprise periodically sending the connectivity characteristics of the node to the collection authority node.
13 . The machine readable medium of claim 1 , wherein the set of peer nodes includes connection information for members of the set of peer nodes.
14 . The machine readable medium of claim 13 , wherein the connection information includes at least one of an address, a protocol, or authentication information.
15 . The machine readable medium of claim 14 , wherein the connection information includes all of the address, the protocol, and the authentication information.
16 . The machine readable medium of claim 1 , wherein synchronizing the event stream includes comparing a local event log against remote event logs and rectifying differences between the local event log and the remote event logs.
17 . The machine readable medium of claim 16 , wherein comparing the local event log against the remote event log includes comparing a version vector of the local event log against a version vector for each of the remote event logs.
18 . The machine readable medium of claim 16 , wherein rectifying the differences between the local event log and remote event logs includes transmitting a missing event to at least one node in the subset of peer nodes.
19 . The machine readable medium of claim 16 , wherein rectifying the differences between the local event log and remote event logs includes receiving a missing event from the local event log from a peer node in the subset of peer nodes.
20 . The machine readable medium of claim 1 , wherein all members of the collection are a proper superset of the set of peer nodes, the set of peer nodes being a preferred participant node subset as designated by the collection authority node, wherein all members of the collection are communicated to the node from the collection authority node.
21 . The machine readable medium of claim 20 , wherein a cardinality of the set of peer nodes is below a threshold, and wherein the set of peer nodes is selected from all members of the collection based on an ordering of the members of the collection.
22 . The machine readable medium of claim 1 , wherein a connection is lost to a member of the connected peers, and wherein the operations further comprise adding a member of the set of peer nodes that is not in the subset of peer nodes to the connected peers after a successful connection attempt is made.
23 . The machine readable medium of claim 1 , wherein the operations further comprise at least one of transferring or receiving all or a portion of a file system element across the event stream, the file system element being one of a plurality of file system elements of the collection, the collection defining a local root for each file system element and member of the collection.