[
https://issues.apache.org/jira/browse/IGNITE-18879?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17831109#comment-17831109
]
Denis Chudov commented on IGNITE-18879:
---------------------------------------
[~yexiaowei] all nodes in the cluster are learners for meta storage group, and
the information about leases is distributed to all learners. We use that fact
that if a lease is accepted, it can't be revoked; and the intervals of leases
are disjoint. Hence the outdated data doesn't break anything. Speaking about
#currentLease, it is used only in the context of the local node and in fact, is
just a currently known information, but the lease is unique cluster-wide within
its interval, so it can't break the distributed mechanisms.
> 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)