返回

Flink 的 Time 三兄弟,天差地别

人工智能

兄弟们,姐妹们,Flink 江湖上的一大谜团,终于要揭开序幕了!它就是——Time 三兄弟!Event Time、Ingestion time、Processing Time,这三个家伙,经常让你云里雾里,分不清谁是谁。今天,我就带大家来认识认识这 Time 三兄弟,让你秒变 Flink 时间大师!

三兄弟的出场

1. Event Time - 事件时间
这位老兄,代表着事件真正发生的时间。为啥这么说?因为它和现实生活中的时间戳一模一样。

2. Ingestion Time - 摄入时间
这个家伙,代表着事件进入 Flink 的时间,也就是事件被 Flink 摄入的那一刻。

3. Processing Time - 处理时间
最后一个出场的,就是处理时间,代表着 Flink 处理事件的时间。当 Flink 在处理一个事件时,它就会生成一个处理时间戳,这个时间戳就代表着该事件被处理的时刻。

三兄弟的脾气秉性

1. Event Time - 高贵冷艳
Event Time,可以说 Time 三兄弟中最傲娇的一个。它和现实世界紧紧相连,和服务器时间、系统时间这些庸俗的东西可不一样。

2. Ingestion Time - 朴实无华
Ingestion Time,就是个老实巴交的家伙。它关心的事情很简单,就是事件啥时候进来的。

3. Processing Time - 随遇而安
Processing Time,是一个随遇而安的家伙。它和 Flink 的运行环境紧密相连,Flink 啥时候处理完事件,它就啥时候生成时间戳。

三兄弟的职责分工

1. Event Time - 真实可靠
Event Time,是 Flink 处理事件时最想用的时间戳。它能确保事件按照真正发生的时间顺序进行处理,让你看到最真实的数据。

2. Ingestion Time - 简单粗暴
Ingestion Time,虽然没有 Event Time 那么高大上,但它胜在简单粗暴,实现起来也比较容易。

3. Processing Time - 权宜之计
Processing Time,一般情况下是 Flink 的备胎,只有在无法获取 Event Time 和 Ingestion Time 的时候才会使用它。

何时该用谁?

1. Event Time - 真实场景首选
如果你想对数据进行实时分析,或者需要对事件进行严格的时序处理,那 Event Time 绝对是你的不二之选。

2. Ingestion Time - 简单易用
如果你对时序要求不高,或者只是想简单地统计一下数据,那 Ingestion Time 就能满足你的需求。

3. Processing Time - 权宜之计
如果你实在无法获取 Event Time 和 Ingestion Time,那 Processing Time 也可以凑合一下,但它真的只是权宜之计。

总结

Time 三兄弟,各有各的脾气秉性和职责分工。在使用 Flink 时,根据你的业务场景和需求,选择合适的时间戳类型,才能让 Flink 发挥出最强大的威力。