如题,大家的在线任务会在晚上重跑一次做校正吗?
*来自志愿者整理的flink邮件归档
我大概明白你的意思了 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邮件归档
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。