k8s限速队列使用场景分析

场景1:add->add->get->get

package main

import (
	"fmt"

	"k8s.io/client-go/util/workqueue"
)

func main() {
	queue := workqueue.NewRateLimitingQueue(workqueue.DefaultControllerRateLimiter())
	queue.Add(100)
	queue.Add(100)
	v, _ := queue.Get()
	fmt.Println(v)
	v, _ = queue.Get()
	fmt.Println(v)
}

连续Add相同key通过dirty这个set去重。

场景2:add->get->add->done->get

package main

import (
	"fmt"

	"k8s.io/client-go/util/workqueue"
)

func main() {
	queue := workqueue.NewRateLimitingQueue(workqueue.DefaultControllerRateLimiter())
	queue.Add(100)
	v, _ := queue.Get()
	fmt.Println(v)
	queue.Add(100)
	queue.Done(100)
	v, _ = queue.Get()
	fmt.Println(v)
}

调用Done方法时,会把之前Add时加入dirty的相同key放入队列。

posted on 2024-04-30 09:14  王景迁  阅读(2)  评论(0编辑  收藏  举报

导航