多个副本访问kubernetes中的缓存

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集群中崩溃时它起作用吗?下一个呼叫可能会在另一个端点上传入?您如何在微服务中缓存值,以便每个副本都可以访问它们?

momate 回答:多个副本访问kubernetes中的缓存

最后找到了:

https://kubernetes.io/docs/concepts/services-networking/service

  

您可以将服务配置为始终具有相同的IP地址   通过将service.spec.sessionAffinity设置为“ ClientIP”   默认为“无”

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  sessionAffinity: ClientIP
  selector:
    app: MyApp

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

本文链接:https://www.f2er.com/3117851.html

大家都在问