You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@kudu.apache.org by "Mike Percy (JIRA)" <ji...@apache.org> on 2017/10/05 22:33:00 UTC

[jira] [Created] (KUDU-2172) Fractional voting

Mike Percy created KUDU-2172:
--------------------------------

             Summary: Fractional voting
                 Key: KUDU-2172
                 URL: https://issues.apache.org/jira/browse/KUDU-2172
             Project: Kudu
          Issue Type: Bug
          Components: consensus
            Reporter: Mike Percy


Fractional voting is a concept where different voters in a Raft config get different voting weights. This can tip the balance in certain cases in which it would otherwise be impossible to achieve a majority.

Example: With equally-weighted votes -- the standard scenario -- in a 4-voter config \{A, B, C, D\}, if a network partition bifurcated this config into two equal groups \{A, B\} and \{C, D\} then no one side could achieve a strict majority (greater than 2 out of 4 votes) and thus the configuration (as a whole) would be unavailable for writes. With fractional voting, if some (but not all) voters got an additional fractional weight to their vote, perhaps \{A=1.1, B=1.1, C=1.1, D=1.0\} it would be possible for some group of two nodes to achieve a majority of votes. In this case, the \{A, B\} group would have a combined weight of 2.2 out of 4.3, which is a strict majority. Therefore the \{A, B\} group would be able to elect a leader between them and accept writes to only the two nodes.

There is a durability tradeoff, in exchange for availability, in the above scenario.

It is worth noting that there is a utility overlap in certain scenarios between fractional voting and config change cancellation (KUDU-1729).

This idea was suggested by Todd during a discussion of the [3-4-3 re-replication design|https://docs.google.com/document/d/1_gQ3BONhKVR2hFlDTShtdx1vHkbVTcLE3b-nrNFwGDI].



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)