V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
workWithMusic
V2EX  ›  Java

多实例 springboot 微服务重启时 Counter 类型指标重置问题

  •  
  •   workWithMusic · 10 小时 1 分钟前 · 489 次点击

    使用 springboot 集成 micrometer 实现自定义 prometheus 指标。 假如在多实例的商城系统中存在一个用于统计商品查看次数的指标,名为 item_view_count ,label:item_idinstance_id 。 当服务重启时,按照 micrometer 的默认行为,这个指标会被置为 0 。

    对于这个行为我想到了两种方案。

    1. 将这个值持久化,并且在第一次创建指标时加载。
    2. 服务重启后使用新的 instance_id ,这样在做 sum 统计时不会被重置影响

    各位都是如何处理这个问题呢?

    6 条回复    2025-12-29 15:45:20 +08:00
    yevXxHmg
        1
    yevXxHmg  
       9 小时 6 分钟前
    我认为这个是一个业务需求,最好是持久化起来,并且需要注意并发,需要上报到 prometheus ,可以自定义 Collector 实现普米接口,从库里或者缓存中读取最新得商品查看次数得指标,上报即可
    Arei
        2
    Arei  
       9 小时 0 分钟前
    只能说看起来不是个适合用 micrometer/prometheus 的指标,如果一定要这样做是不是得用 sum+increase 函数在 granfana 统计
    yesterdaysun
        3
    yesterdaysun  
       8 小时 45 分钟前
    不用特别处理, 直接用 sum+increase 统计即可
    wudaye
        4
    wudaye  
       8 小时 39 分钟前
    counter 不是这么玩的,考虑一下 Gauge ?
    lander203
        5
    lander203  
       8 小时 35 分钟前
    如果你不需要非常精确,只需要看一个大概值,可以使用方案 1

    另外,如果只需要看 sum ,可以在服务关闭时,把自身的数量交给其他实例——通过 topic 和 lock 来保证数据正确
    joe469391363
        6
    joe469391363  
       6 小时 57 分钟前
    你这个场景就不适合使用 counter
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   2849 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 18ms · UTC 14:42 · PVG 22:42 · LAX 06:42 · JFK 09:42
    ♥ Do have faith in what you're doing.