我碰到过一个帖子Scaling Klaviyo’s Event processing Pipeline with Stream Processing,在该帖子中,名为Klaviyo的公司中的人员在每小时,每天甚至每月的不同时间范围内进行计数。
我有几个问题,如果我理解正确,他们正在使用时间窗口,但是长时间使用时间窗口(如一天)是正常的吗?!
这对我来说没有意义,如果您每天或每月进行计数,为什么不使用批处理?在这种情况下使用流式传输的基本好处是什么?
另一种情况,如果我需要从头开始实时计算卡夫卡事件实时,那么实际的解决方案是什么?每当事件到来时,使用flink流技术更新Redis中的“计数器”吗?如果卡夫卡很忙,例如每秒几百万条消息,那么会不会有太多的IO和网络?
答案 0 :(得分:1)
如果您每天或每月进行一次操作,对我来说这没有意义 计数,为什么不使用批处理?根本是什么 在这种情况下使用流媒体的好处?
请确保您可以进行其他批处理。但是您将如何处理重新处理?您必须重新启动批处理过程和实时过程,并且数据可能不匹配,因为您有两个过程。
对于几天内的聚合,有rocks-db解决方案,因此数据不会爆炸内存。 (在KafkaStream中,数据甚至存储回Kafka)。
如果每个事件到来时都需要更新计数器,那么问题是有人需要以0.001毫秒为单位查看计数器吗?因为您可以在0.3秒内将流水线批处理,以使人们可以尽其所能。这就是为什么人们也说near-realtime
的原因,这意味着它不是实时的,但是已经满足了需求。