我們有一個 kubernetes 集群,其中會觸發協調以響應自定義事件。使用以下格式在 Golang 中實現:type reconciler struct {}func (reconciler) Reconcile(ctx context.Context, o reconcile.Request) (reconcile.Result, error) { // Implement business logic of reading and writing objects here return reconcile.Result{}, nil}當自定義事件過多時,我們已經確定了協調邏輯中可能存在的瓶頸。因此,代碼已更新為具有非阻塞協調邏輯。例子:type reconciler struct {}func (reconciler) Reconcile(ctx context.Context, o reconcile.Request) (reconcile.Result, error) { go func() { // Implement business logic of reading and writing objects here }() return reconcile.Result{}, nil}但是,在某些地方非阻塞 go routine 可能會返回 return ctrl.Result{Requeue: true}, nil 或 return ctrl.Result{RequeueAfter: someTime}, nil在這種情況下,我們如何將此類事件重新排隊到協調循環,因為返回不會返回給調用者 Reconcile()
1 回答

子衿沉夜
TA貢獻1828條經驗 獲得超3個贊
我認為更好的方法是使用并發協調,允許處理其他請求,而單個協調請求處理起來很慢。這樣協調請求隊列就不會被阻塞,空閑的 go 例程相當便宜,所以它不應該對你的性能產生太大影響。
- 1 回答
- 0 關注
- 120 瀏覽
添加回答
舉報
0/150
提交
取消