【Ratis&Celeborn】Celeborn里关于leader的使用

之前的文章我们说过,celeborn是使用了ratis来做master的高可用的。它的请求都是由对应的“active master”处理的,这个active master其实就是ratis的leader node。

本文的目标就是弄清楚celeborn里,怎么实现的让raits的leader node处理客户端和worker的RPC请求的。

核心方法是HARaftServer#isLeader(),用于判断当前节点是否是leader节点,如果是,返回true,否则,返回false。

看下具体实现,checkCachedPeerRoleIsLeader方法持有读锁,去判断cachedPeerRole的角色是否是Raft的Leader,如果是,直接返回true。如果不是leader,那么执行updateServerRole方法向Raft Server端发送一个getGroupInfo RPC,更新当前节点的角色信息,更新缓存。最后再从缓存里返回当前节点的角色信息。

  /**
   * Check if the current node is the leader node.
   *
   * @return true if Leader, false otherwise.
   */
  publ
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大数据技术部落

觉得有收获就支持一下吧~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值