实施用户事件跟踪日志聚合系统的最佳实践?

时间:2019-03-15 11:13:35

标签: apache-kafka real-time apache-flink

我在实习中挣扎,被告知要实施一个系统来跟踪用户事件的实时汇总。

输入数据来自Kafka集群。为了简单起见,让我们说模式是

{"userId" = "AAA", "region" = "US", {"like" = 1}}

对于机器学习团队和操作团队,我必须将结果汇总到每5分钟,每1小时和每天,并对网络抖动具有容错能力。他们希望像每5分钟计数那样聚合数据,但是它不是任意的,它必须像10:00-10:05 10:05-10:10。时间和日期相同。

因此,我必须与系统时间进行比较,以决定是否应将元素放入存储桶并计算该存储桶内的聚合。

首先,我试图通过尝试使用带有窗口的Flink之类的工具来解决此问题。我发现3个窗口的大小分别为5分钟,1小时和1天。并将onElement回调用于整个时间点的边缘条件。但是一段时间内,内存负载是无法预测的,有很多不同的用户停留在窗口中并导致某些节点性能问题。

所以我必须使用一些KV存储作为部分计算的数据的中间值。

然后我使用Redis集群来保存KV存储。但是似乎Flink对Redis的影响太大,Flink的吞吐量比Redis高得多。 DAU在全球范围内约为1000万。

似乎只有一种方法可以修改附加到Flink的Rocketdb并实现一些缓存,而不是删除窗口。

我想知道以前有没有人实现过这种系统,并给我一些建议。

谢谢。

0 个答案:

没有答案