Denis Chudov created IGNITE-24104:
-------------------------------------

             Summary: Add the new distribution zone parameter QUORUM_SIZE
                 Key: IGNITE-24104
                 URL: https://issues.apache.org/jira/browse/IGNITE-24104
             Project: Ignite
          Issue Type: Improvement
            Reporter: Denis Chudov


*Motivation*

Quorum is chosen because it is quite straightforward for the user: if they are 
able to keep QUORUM_SIZE nodes in the zone, there should be no data loss, 
unless they lose multiple nodes simultaneously so that the quorum would be not 
able to transfer to nodes that remain online.

It specifies the size of the majority quorum. In fact, the size of consensus 
group can be derived from it, depending on the replication algorithm, in the 
case of Raft it is calculated as QUORUM_SIZE * 2 - 1, so the quorum size is the 
size of the majority of nodes in the consensus of a replication group. This 
implies that the size of the consensus group will be an odd number, if there 
are enough replicas.

The QUORUM_SIZE parameter may be set with any sufficient number of replicas, 
either ALL or not. This means that we can have, for example, 10 data nodes, 7 
replicas and quorum size 3, meaning that 5 replicas will form the consensus 
group and 2 will be learners.

The default value should be
 * If there are 4 or less data nodes: min(2, data_nodes_count);
 * If there are at least 5 data nodes: 3.

Lower and upper boundaries:
 * Lower: 1 if there is only one replica and 2 if there is more than 1 node. 
Having the quorum of 1 node where there are more replicas makes no sense and 
decreases reliability;
 * Upper: no less than lower bound, but making the consensus group fit into the 
configured replicas count.

*Definition of done*

The QUORUM_SIZE parameter for the zone is added, with aforementioned defaults 
and boundaries. Unit tests for defaults and boundaries are added.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to