开发者社区> 问答> 正文

大家的在线任务会在晚上重跑一次做校正吗?

如题,大家的在线任务会在晚上重跑一次做校正吗?

*来自志愿者整理的flink邮件归档

展开
收起
游客nnqbtnagn7h6s 2021-12-06 19:50:26 365 0
1 条回答
写回答
取消 提交回答
  • 我大概明白你的意思了 1.两组consumer如果groupid相同的的话,数据只能被一组consumer消费,另一组是消费不到数据的。但是我们也可以通过一些其他方式实现你所描述的两个flink任务同时处理的情况。但是你需要确保两个任务不会消费到同样的数据导致产出重复数据,无论是手动还是自动化去维护这种处理任务的成本是很高的,并且还会吧整个系统复杂化。 2.我理解无论上游是oom还是其他原因导致的数据积压从而导致flink会有背压,这在本质上不是一种异常现象,因为上游突然有数据峰值或者大流量数据也会导致背压(导致背压的原因就是flink中有一些算子达到了处理能力瓶颈),所以我们的重点是如何去处理上游大流量数据导致的背压。 举个例子: a.正常情况下 上游kafka是500records/s,flink整体处理能力是1000records/s,那么flink job会正常运行,下游数据正常产出;

    b.由于上游oom或者其他原因(比如大流量数据等): 上游kafka变为了1500records/s(我们可以根据自己的业务,通过经验值判断出来这种情况假设只会持续60秒),flink依然是1000records/s,那么其实最后通过下面的计算方式得出:

    设x :flink处理背压数据后并且能够消费到最新的offset所需要的分钟数 1500 * 1 + 500 * (x - 1) = 1000 * x  就可以得出 x = 2分钟 我解释下上述表达式含义:上游kafka峰值流量 * 持续1分钟 + 上游kafka正常流量 * 持续x - 1分钟 = flink 处理能力 * x分钟

    结论就是flink只需要处理2分钟就能消费到最新的offset了 所以我们只需向用户保证在这种情况下,flink可以正常处理数据并且能够赶上最新的数据即可,需要告诉用户的只是说在异常情况下,最多处理2分钟(这里的2分钟是我上面计算得到的,具体几分钟要看你们的业务场景)就可以赶上最新的数据了。

    *来自志愿者整理的flink邮件归档

    2021-12-06 21:21:28
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
机器能预报多久后的天气? 立即下载
美团 crash 监控分析系统优化之路:crash 率从千分位到万分位 立即下载
十分钟上线-使用函数计算构建支付宝小程序服务 立即下载