我正在开发一项服务(用 Go 编写),预计会收到大量请求。根据架构,服务的每个 Pod 都应该为特定的客户端提供服务。比方说,如果该服务有 3 个 pod,则分割将类似于 -> A-H, I-P, Q-Z,其中每个字母都是客户姓名的第一个字母。但如果这个服务有 4 个 pod,那么 split 可以是 -> A-F, G-N, O-U, V-Z。有没有办法我可以在 Go 代码中知道还有多少个其他副本?PS:据我所知,一种可能性是有一个environment variablein deployment.yaml. 但有一些方法可以在不改变yaml.
1 回答
明月笑刀无情
TA贡献1828条经验 获得超4个赞
根据标题,解决方案是使用StatefulSet
每个服务相互了解的地方,并且可以以处理这种情况的方式编写应用程序。
然而,对于这个问题,根据提到的细节,一个不使用的好的解决方案StatefulSet
是创建一个Service
带有sessionAffinity: ClientIP
. 根据详细信息的要求是,后续请求必须发送到为前一个请求提供服务的特定 Pod。这可以使用sessionAffinity
字段进行配置。当新客户端连接时,将在执行负载平衡后service
选择一个。pod
发布该内容后,所有后续请求都将仅针对该内容pod
。可以使用 进一步配置SessionAffinityConfig
。
- 1 回答
- 0 关注
- 121 浏览
添加回答
举报
0/150
提交
取消