baidu / braft

An industrial-grade C++ implementation of RAFT consensus algorithm based on brpc, widely used inside Baidu to build highly-available distributed systems.
Apache License 2.0
3.99k stars 886 forks source link

braft 节点如何高性能判断是否是 leader 且在 lease 内? #442

Closed ergesun closed 3 months ago

ergesun commented 8 months ago

我发现 is_leader_lease_valid api 应该是一个正确可用的方式做这件事,但性能上其内部会加互斥锁,对于高 OPS 场景这么做不太好,有什么其他的推荐的好办法?

ehds commented 4 months ago

is_leader_lease_valid 有 fast path 用于快速判断 lease 是否有效。 通常会在 lease 时间过期后(通常是秒级别),才会加锁重新计算有效值。

ergesun commented 3 months ago

@ehds 所以目前 braft 提供的 API 层面来看 is_leader_lease_valid 就是最优的了是吧?不过我看 fast path image 里面也是加了锁的

ehds commented 3 months ago

不过

这里锁的临界区很小.

ergesun commented 3 months ago

嗯,但是就不那么极致了。不过优化是另外一个话题,这个我就关掉了