You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Denis Chudov (Jira)" <ji...@apache.org> on 2023/04/11 16:14:00 UTC

[jira] [Updated] (IGNITE-18879) Leaseholder candidates balancing

     [ https://issues.apache.org/jira/browse/IGNITE-18879?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Denis Chudov updated IGNITE-18879:
----------------------------------
    Description: 
*Motivation*
Primary replicas (leaseholders) should be evenly distributed over cluster to balance the transactional load between nodes. As the placement driver assigns primary replicas, balancing the primary replicas is also it's responsibility. Naive implementation of balancing should choose a node as leaseholder candidate in a way to save even lease distribution over all nodes. In real cluster, it may take into account slow nodes, hot table records, etc. If lease candidate declines LeaseGrantMessage from placement driver, the balancer should make decision to choose another candidate for given primary replica or enforce the previously chosen. So the balancing algorith should be pluggable, so that we could have ability to improve/replace/compare it with others.

*Definition of done*
Introduced interface for lease candidates balancer, and a simple implementation sustaining even lease distribution, which is used by placement driver by default. No public or internal configuration needed on this stage.

*Implementation notes*
Lease candidates balancer should have at least 2 methods:
 - {_}get(group, ignoredNodes){_}: returns candidate for the given group, a node from ignoredNodes set can't be chosen as a candidate
 - {_}considerRedirectProposal(group, candidate, proposedCandidate){_}: processes redirect proposal for given group provided by given candidate (previously chosen using _get_ method), proposedCandidate is the alternative candidate. Returns candidate that should be enforced by placement driver.

  was:
*Motivation*
Primary replicas (leaseholders) should be evenly distributed over cluster to balance the transactional load between nodes. As the placement driver assigns primary replicas, balancing the primary replicas is also it's responsibility. Naive implementation of balancing should choose a node as leaseholder candidate in a way to save even lease distribution over all nodes. In real cluster, it may take into account slow nodes, hot table records, etc. If lease candidate declines LeaseGrantMessage from placement driver, the balancer should make decision to choose another candidate for given primary replica or enforce the previously chosen. So the balancing algorith should be pluggable, so that we could have ability to improve/replace/compare it with others.

*Definition of done*
Introduced interface for lease candidates balancer, and a simple implementation sustaining even lease distribution, which is used by placement driver by default. No public or internal configuration needed on this stage.

*Implementation notes*
Lease candidates balancer should have at least 2 methods:
- _get(group)_: returns candidate for the given group
- _considerRedirectProposal(group, candidate, proposedCandidate)_: processes redirect proposal for given group provided by given candidate (previously chosen using _get_ method), proposedCandidate is the alternative candidate. Returns candidate that should be enforced by placement driver.


> Leaseholder candidates balancing
> --------------------------------
>
>                 Key: IGNITE-18879
>                 URL: https://issues.apache.org/jira/browse/IGNITE-18879
>             Project: Ignite
>          Issue Type: Improvement
>            Reporter: Denis Chudov
>            Priority: Major
>              Labels: ignite-3
>
> *Motivation*
> Primary replicas (leaseholders) should be evenly distributed over cluster to balance the transactional load between nodes. As the placement driver assigns primary replicas, balancing the primary replicas is also it's responsibility. Naive implementation of balancing should choose a node as leaseholder candidate in a way to save even lease distribution over all nodes. In real cluster, it may take into account slow nodes, hot table records, etc. If lease candidate declines LeaseGrantMessage from placement driver, the balancer should make decision to choose another candidate for given primary replica or enforce the previously chosen. So the balancing algorith should be pluggable, so that we could have ability to improve/replace/compare it with others.
> *Definition of done*
> Introduced interface for lease candidates balancer, and a simple implementation sustaining even lease distribution, which is used by placement driver by default. No public or internal configuration needed on this stage.
> *Implementation notes*
> Lease candidates balancer should have at least 2 methods:
>  - {_}get(group, ignoredNodes){_}: returns candidate for the given group, a node from ignoredNodes set can't be chosen as a candidate
>  - {_}considerRedirectProposal(group, candidate, proposedCandidate){_}: processes redirect proposal for given group provided by given candidate (previously chosen using _get_ method), proposedCandidate is the alternative candidate. Returns candidate that should be enforced by placement driver.



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