为了账号安全,请及时绑定邮箱和手机立即绑定

多个副本访问 kubernetes 中的缓存

多个副本访问 kubernetes 中的缓存

Go
慕尼黑5688855 2023-08-07 10:37:06
Prometheus 日志记录的一项统计数据是服务调用的持续时间,但我想测量同一服务的多次调用的时间。所以我想创建一个字符串到 time.Time 的映射type SomeService struct {    durations map[string]time.Time}第一次输入时,将存储该帐户 ID 的当前时间durations[GetId()] = time.Now()然后最后......在另一个调用中......总时间被存储。startTime := c.durations[id]duration, _ := c.durationStat.GetMetricWith(prometheus.Labels{"type": duration})duration.Set(time.Now().Sub(startTime).Seconds())delete(c.durations, id)当只有一个副本时这可行,但它在 Kubernetes 集群中崩溃了,对吧?下一个呼叫可能来自另一个端点?如何在微服务中缓存值以便每个副本都可以访问它们?
查看完整描述

1 回答

?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

终于找到了这个:

您可以通过将 service.spec.sessionAffinity 设置为“ClientIP”来配置服务,使相同的 IP 地址始终访问同一个 pod,默认值为“None”

apiVersion: v1

kind: Service

metadata:

  name: my-service

spec:

  sessionAffinity: ClientIP

  selector:

    app: MyApp

这样您就可以安全地将简单值缓存在内存中!


查看完整回答
反对 回复 2023-08-07
  • 1 回答
  • 0 关注
  • 85 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信