【问题标题】:aggregate metrics regarding akka streams关于 akka 流的聚合指标
【发布时间】:2019-09-20 22:39:45
【问题描述】:

在我的应用程序中,我有一个源,我正在为客户端调用多路复用。

类似:

val source: RunnableGraph[Source[...]] = ...

def foo() = source.run().log("sending user something").map(...)

如果我有 1000 个客户端调用 foo 并且每秒 foo 滴答声,就会有数百万条毫无意义的日志消息。所以我想摆脱上面的单个日志,并将其替换为一条聚合消息,例如:

“向 X 客户发送了一些东西”。

我看过 Kamon 和肉桂,所以我很欣赏这可能与这些有关,但理想情况下,这样的东西有更轻量级的东西吗?

【问题讨论】:

标签: scala stream akka metrics


【解决方案1】:

我认为如果您将在像这样https://softwaremill.com/windowing-data-in-akka-streams/ 的小窗口中聚合数据是可能的 或者您可以拥有 Map[ClientId, Monoid[YourCallMetrics]] 并通过可运行图组合它

【讨论】:

  • 感谢@mikhail。我不太喜欢窗口化的想法,因为它脱离了上下文,源代码用 id=XXX 打勾,结果,下游订阅者打勾。我希望能够记录一条消息,说“ 个客户得到更新 XXX”。如果有办法标记下游的开始和结束,那么我可以在通知第一个订阅者之前重置一个计数器,并在通知最后一个订阅者之后记录计数。有意义吗?
猜你喜欢
  • 2016-07-06
  • 2015-09-05
  • 1970-01-01
  • 2020-05-12
  • 1970-01-01
  • 2017-04-09
  • 1970-01-01
  • 2019-11-16
  • 2013-03-03
相关资源
最近更新 更多