You need to enable JavaScript to run this app. Akka HTTP caching使用getOrLoad方法如何添加缓存命中/未命中指标
优惠活动
大模型
产品
解决方案
定价
更多

Akka HTTP caching使用getOrLoad方法如何添加缓存命中/未命中指标

Akka HTTP Caching 缓存指标问题解答

核心结论

Akka HTTP 官方Caching模块没有内置开箱即用的缓存命中/未命中指标统计能力,你没有遗漏官方文档的相关内容。

两种指标统计实现方案

你可以根据自己的使用场景选择以下任意一种方案实现指标采集:

方案1:自行封装getOrLoad方法埋点

对原生方法做一层轻量包装,自定义埋点统计所需指标,示例代码如下:

import java.util.concurrent.atomic.AtomicLong
import akka.http.caching.scaladsl.Cache
import scala.concurrent.Future
import scala.util.{Success, Failure}

// 定义指标统计变量,可根据需要替换为Dropwizard、Prometheus等可观测组件的指标实例
val cacheHits = new AtomicLong(0)
val cacheMisses = new AtomicLong(0)
val cacheLoadFailures = new AtomicLong(0)

def getOrLoadWithMetrics[K, V](cache: Cache[K, V], key: K, loader: K => Future[V]): Future[V] = {
  cache.get(key) match {
    case Some(cachedFuture) =>
      cacheHits.incrementAndGet()
      cachedFuture
    case None =>
      cacheMisses.incrementAndGet()
      val loadedFuture = loader(key)
      loadedFuture.onComplete {
        case Failure(_) => cacheLoadFailures.incrementAndGet()
        case Success(_) => // 可扩展统计加载耗时、加载成功数等额外指标
      }(cache.executionContext)
      // 与原生getOrLoad逻辑对齐,将加载结果存入缓存
      cache.put(key, loadedFuture)
      loadedFuture
  }
}

方案2:复用底层Caffeine缓存的原生统计能力

Akka HTTP的LfuCache底层基于Caffeine缓存实现,你可以直接获取底层Caffeine实例获取官方内置的全量统计数据:

  1. 初始化缓存时开启统计开关
  2. 调用unsafe接口获取Caffeine实例读取统计数据
    示例代码如下:
import akka.http.caching.scaladsl.{LfuCache, LfuCacheSettings}
import com.github.benmanes.caffeine.cache.stats.CacheStats

// 初始化缓存时开启统计功能
val cacheSettings: LfuCacheSettings = LfuCache.defaultSettings
  .withEnableStats(true)
val cache: LfuCache[String, String] = LfuCache(cacheSettings)

// 按需读取统计指标
val stats: CacheStats = cache.unsafe.stats()
val hitCount: Long = stats.hitCount()
val missCount: Long = stats.missCount()
val hitRate: Double = stats.hitRate()
val evictionCount: Long = stats.evictionCount()
val averageLoadPenalty: Double = stats.averageLoadPenalty()

内容的提问来源于stack exchange,提问作者Anton Belev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 14:15:02