登录
首页 >  Golang >  Go问答

观察两个不同 Go 例程中的 Pod,它们会产生相似的事件吗?

来源:stackoverflow

时间:2024-02-23 16:48:26 192浏览 收藏

你在学习Golang相关的知识吗?本文《观察两个不同 Go 例程中的 Pod,它们会产生相似的事件吗?》,主要介绍的内容就涉及到,如果你想提升自己的开发能力,就不要错过这篇文章,大家要知道编程理论基础和实战操作都是不可或缺的哦!

问题内容

我目前正在做这样的事情

watch, err := s.clientset.CoreV1().Pods("").Watch(context.TODO(), metav1.ListOptions{
    FieldSelector: fmt.Sprintf("spec.myfoo=%s", s.foo),
})

for event := range watch.ResultChan() {
    .......
}

我很好奇,如果我在两个不同的例程中有类似的东西,两个手表都会得到相同的事件,或者两个例程是否可能得到不同的事件。根据谁先得到它?


正确答案


Watch 在内部与 API 服务器建立长轮询连接。建立连接后,API 服务器将发送一批初始事件和任何后续更改。一旦发生超时,连接将被断开。

由于您的场景涉及两个 go 例程,因此我们无法保证两个例程将同时开始执行,并且两个长轮询连接将同时建立。此外,连接可能会在某个时刻断开。

在大型集群中,Pod 不断被杀死和创建。因此,两个 Go 例程当然有可能接收到不同的事件。

本篇关于《观察两个不同 Go 例程中的 Pod,它们会产生相似的事件吗?》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>