创新点,指数退避算法结合静态更新时间。

const maxBackoff = 10

func UpdateConf() {
	//参考:二进制指数退避算法。
	//优化:依据局部性原理,更新配置的一段时间内,还有可能再次更新配置;
	backoff := 1
	baseSleepTime := 6 * time.Second
	expireActiveTime := 30

	for {
		systemTag := cli.Get(Tag)
		if systemTag != lastTag {
      UPDATE()
			backoff = 1
			expireActiveTime = 30
		}
		for i := 1; i <= backoff; i++ {
			time.Sleep(baseSleepTime)
		}
		expireActiveTime--
		if expireActiveTime < 0 && backoff < maxBackoff {
			// backoff <<= 1
			backoff++
			expireActiveTime++ // prevent out range
		}
	}
}