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
这样您就可以安全地将简单值缓存在内存中!
- 1 回答
- 0 关注
- 85 浏览
添加回答
举报
0/150
提交
取消