[ 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)