观测到创建space的时候,比如说三个节点的集群,三副本,一般会出现两个节点分布了这个space的所有leader,另外一个节点没有leader的情况,这个我看了一下代码,应该是由于Storaged的异步从meta load数据,然后crate space,再create part以后,leader election取决于每一个storage什么时间触发metaclient的diff周期函数
对于leader分布不均匀问题,是否由于各个storage之间的异步周期函数的不确定导致每一个sotrage的part出发election的时机导致最终的leader分布不均匀:
对于提升初始 leader distribution 均衡程度有思路么?或者我们一起讨论一下,感谢~
1 个赞
wey
2
Also in https://github.com/vesoft-inc/nebula/discussions/4731
我观察了自己手上的集群,似乎初始的分布都是很均匀的,不知道什么样的特征会造成这样的结果,等存储同学解惑。
另外 @Milittle 你只在一个集群大概率观察到这么?还是不同集群上都有观察到初始 leader 不均衡情况?
@wey
你心跳设置的比较小吧,用默认 10 秒试一下。然后 3 副本,不要单副本。
PS:
为了减少并发拉取信息对 meta 的压力,meta client 的心跳会有个随机值,所以即便心跳一样,同时启动 storage,向 meta 请求的时间也不会完全一样。
size_t delayMS = FLAGS_heartbeat_interval_secs * 1000 + folly::Random::rand32(900);
1 个赞
spw
4
现在在创建 space 的时候,确实暂时只能控制 space 的 partition replica 的分布;但不能控制其 leader 的分布;这和 raft 选举有关。
如果想控制 leader 的分布的话,可能得增加一些对 leader 分布的定期检查,然后在 raft 选主时给一些 hint。
2 个赞
那应该确定就是sotrage的心跳不同导致leader election不均衡的问题
wey
7
@spw @HarrisChu @Milittle 要不要在 github discussion 里试着弄一个 RFC 设计讨论看看?
system
关闭
9
此话题已在最后回复的 30 天后被自动关闭。不再允许新回复。