braft - lease机制

文章详细解释了在Raft一致性算法实现中,LeaderLease的状态机及其在节点状态转换中的作用。Lease状态包括DISABLED,EXPIRED,NOT_READY,VALID和SUSPECT,分别对应领导者选举的不同阶段。Lease的管理涉及领导者是否能阻止follower发起选举和投票,以及如何判断和更新lease的有效性。在lease失效时,会触发节点状态的改变,如从领导者变为跟随者。

braft中和lease相关的定义:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// State of a lease. Following is a typical lease state change diagram:
//
// event: become leader become follower
// ^ on leader start ^ on leader stop
// | ^ | ^
// time: ----------|-----------|-----------------|---|-------
// lease state: EXPIRED | NOT_READY | VALID | EXPIRED
//
enum LeaseState {
// Lease is disabled, this state will only be returned when
// |raft_enable_leader_lease == false|.
LEASE_DISABLED = 1,

// Lease is expired, this node is not leader any more.
LEASE_EXPIRED = 2,

// This node is leader, but we are not sure the data is up to date. This state
// continue until |on_leader_start| or the leader step down.
LEASE_NOT_READY = 3,

// Lease is valid.
LEASE_VALID = 4,
};

NOT_READY: 在 become_leader 后,on_leader_start 前的时间区间内,为NOT_READY状态。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// in lock
void NodeImpl::become_leader() {
CHECK(_state == STATE_CANDIDATE);
LOG(INFO) << "node " << _group_id << ":" << _server_id
<< " term " << _current_term
<< " become leader of group " << _conf.conf
<< " " << _conf.old_conf;
// cancel candidate vote timer
_vote_timer.stop();
_vote_ctx.reset(this);

_state = STATE_LEADER;
_leader_id = _server_id;

_replicator_group.reset_term(_current_term);
_follower_lease.reset();
_leader_lease.on_leader_start(_current_term);
// ...
}

EXPIRED:在 step_down 后,on_leader_stop 前的时间区间内,为EXPIRED状态。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// in lock
void NodeImpl::step_down(const int64_t term, bool wakeup_a_candidate,
const butil::Status& status)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值