该应用程序在Kafka主题“原始指标”中收集了数千个指标。以原始格式存储它们并获取要在UI中显示的内容会占用大量资源且速度很慢。我想汇总每个指标,并每小时/每天计算“平均,总和,最小值,最大值,平均值,中位数,方差”等,并将汇总值存储在数据库中。
应用程序使用Kafka v1.1,并尝试了解Kafka流是否对您有帮助。
输入指标流-
时间戳:t1 metricID:m1 metricName:HTTPRequest metricValue:10
时间戳:t1 metricID:m2 metricName:HTTPResponse metricValue:9
时间戳:t2 metricID:m1 metricName:HTTPRequest metricValue:20
预期输出- 公制|时间戳记|中位数|总和|平均|差异|均值
HTTPRequest 2019-01-01 05:30:00 + 0530到2019-01-01 06:30:00 + 0530 X Y Z Q
HTTPRequest 2019-01-01 05:30:00 + 0530到2019-01-01 06:30:00 + 0530 X Y Z Q
这是我的方法-
metricStream
.filter((k, v) -> (MetricFilter::Validate))
.map((k, v) -> new KeyValue<>(v.metricID, v))
.through(stringSerde, metricStreamSerde, "topic.metric.output")
.groupBy((k, v) -> k, stringSerde, metricStreamSerde)
.aggregate(MetricStreamCollector::new, (k, v, MetricStreamCollector) -> MetricStreamCollector.add(v),
TimeWindows.of(1 * 60 * 1000).until(60000L), collectorSerde,
"topic.metric.aggregation")
.to(windowedSerde, collectorSerde, new MetricStreamPartitioner(), "topic.metric.rollup"));
请帮助我理解以下内容-
谢谢。