Patent ID: 9749427
Date: 2017-08-29
CPC Classifications: H04L

Claim:
1. A method, comprising: separating each of a plurality of consensus protocols into one or more communication steps, wherein the consensus protocols are useable to substantially maintain data consistency between nodes in a distributed computing system, and wherein a communication step comprises a message transfer, attributable to a consensus protocol, in the distributed computing system; computing, for each of the plurality of consensus protocols, an estimated protocol-level delay based on one or more attributes associated with the separated communication steps of a corresponding consensus protocol; and selecting one of the plurality of consensus protocols to substantially maintain the data consistency between the nodes in the distributed computing system, wherein the selection is based on the estimated protocol-level delays respectively computed for each of the plurality of consensus protocols; wherein one of the plurality of consensus protocols comprises a single leader Paxos-type consensus protocol; wherein the estimated protocol-level delay Tp for the single leader Paxos-type consensus protocol is computed as: wherein L is a network latency and n is the number of the nodes in the distributed computing system; wherein another one of the plurality of consensus protocols comprises a fast Paxos-type consensus protocol; wherein, for the fast Paxos-type consensus protocol, the estimated protocol-level delay Tp is computed as: wherein L is the network latency, pc is a collision probability, and n is the number of the nodes in the distributed computing system; wherein yet another one of the plurality of consensus protocols comprises an epoch-based Paxos-type consensus protocol; wherein, for the epoch-based Paxos-type consensus protocol, the estimated protocol-level delay Tp is computed as: wherein L is the network latency, W is an epoch wait time, S is a time synchronization difference, and n is the number of the nodes in the distributed computing system; and wherein the separating, computing, and selecting steps are performed via a processing device and a memory.