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

Micrometer Timer.start/stop 和 Timer.record 之间的区别

Micrometer Timer.start/stop 和 Timer.record 之间的区别

哆啦的时光机 2023-04-26 14:54:12
我想检查数据库命中(多个数据库)和请求处理的延迟。什么是更好的选择Timer.Sample或Timer.record?我正在使用以 Prometheus 为基础的 Micrometer。
查看完整描述

2 回答

?
青春有我

TA贡献1784条经验 获得超8个赞

计算事件持续时间后使用 Timer.record 。

default void record(Duration duration)

当您想要传递 Sample 以确定发布指标的点时,您通常会使用 Timer.Sample,不一定在完全相同的位置。您还可以更精细地控制使用 Timer 对象发布的内容。这是一个两步过程。

  1. 在事件开始之前创建一个样本以返回一个样本对象

    static Sample start(Clock clock) {..}
  2. 使用 Sample.stop 停止示例并在活动完成时推送指标

    public long stop(Timer timer) {..}

例如来自TimedAspect的那个-

  Timer.Sample sample = Timer.start(registry);

    try {

        return pjp.proceed();

    } finally {

        sample.stop(Timer.builder(timed.value())

                .description(timed.description().isEmpty() ? null : timed.description())

                .tags(timed.extraTags())

                .tags(tagsBasedOnJoinpoint.apply(pjp))

                .publishPercentileHistogram(timed.histogram())

                .publishPercentiles(timed.percentiles().length == 0 ? null : timed.percentiles())

                .register(registry));

    }


查看完整回答
反对 回复 2023-04-26
?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

主要区别是添加了手动停止录制的选项

您还可以将开始状态存储在稍后可以停止的示例实例中。该示例根据注册表的时钟记录开始时间。启动样本后,执行要计时的代码,并通过调用样本的stop(Timer) 完成操作。


查看完整回答
反对 回复 2023-04-26
  • 2 回答
  • 0 关注
  • 295 浏览

添加回答

举报

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