比较RuleFit为什么涉及len(Peers)

见pd/pkg/schedule/placement/fit.go

func compareRuleFit(a, b *RuleFit) int {
	switch {
	case len(a.Peers) < len(b.Peers):
		return -1
	case len(a.Peers) > len(b.Peers):
		return 1
	case len(a.PeersWithDifferentRole) > len(b.PeersWithDifferentRole):
		return -1
	case len(a.PeersWithDifferentRole) < len(b.PeersWithDifferentRole):
		return 1
	case a.IsolationScore < b.IsolationScore:
		return -1
	case a.IsolationScore > b.IsolationScore:
		return 1
	case a.WitnessScore > b.WitnessScore:
		return -1
	case a.WitnessScore < b.WitnessScore:
		return 1
	default:
		return 0
	}
}

IsolationScore越大的RuleFit越好, 这个合理
但是, 为什么len(Peers)越大的RuleFit越好
说到底, 什么情况下这里的两个 RuleFit 会有不同的len(Peers)

:thinking:IsolationScore这个应该是评分吧,评分越高的匹配度越高,应该是正常的吧。

楼主是看这篇文章产生的疑问么?

对应源码:

https://github.com/tikv/pd/blob/master/pkg/schedule/placement/fit.go#L153

及PR:

https://github.com/tikv/pd/pull/1865

1 个赞

学习了

你好, 我的疑问点是 len(Peers)

case len(a.Peers) > len(b.Peers):
  return 1

:thinking:这个应该是比较副本大小