1

在观察 Kubernetes 资源的变化时,幕后到底发生了什么?是否http突然变为wss连接?

为了解决对 kube-apiserver 的请求过多的问题,我将一些代码重写为我认为更像是操作员模式的代码。

在我们的多租户微服务架构中,所有服务都使用同一个库来查找特定于租户的数据库的连接详细信息。连接详细信息保存在与应用程序相同的命名空间内的机密中。每个租户数据库都有自己的秘密。

因此,在每次调用时,都会读取并解析所有带有正确标签的秘密,以获取必要的数据库连接详细信息。我们有大约 400 个服务/pod...

我的想法:不是在每次调用时读取所有秘密,而是创建一个缓存并在每次通过观察者更改相关秘密时更新缓存。

我的担忧:我只是用同样昂贵的 websocket 替换 http 请求吗?据我了解,我现在将为每个服务/pod 建立一个开放的 websocket 连接,仍然是 400 个开放连接。

有一个代理服务来监视机密(kube-apiserver 请求)然后所有服务都查询该服务以获取连接详细信息(内网请求,kube-apiserver 不相关)会更好吗?

4

1 回答 1

2

来源

// ServeHTTP serves a series of encoded events via HTTP with Transfer-Encoding: chunked
// or over a websocket connection.

这在很大程度上取决于客户端使用哪种协议(分块 http 或 ws),它们都有自己的成本,您必须将其与当前的请求频率进行比较。

使用定期监视或轮询的代理缓存可能会更好,但这在很大程度上取决于您的应用程序。

于 2020-01-14T15:45:43.487 回答