动态限制 flink kafka 源
Posted
技术标签:
【中文标题】动态限制 flink kafka 源【英文标题】:Dynamically throttle flink kafka sources 【发布时间】:2017-11-10 17:53:34 【问题描述】:我们正在使用多个 kafka 主题,但希望优先处理其中一些主题(~ 服务质量)。
根据我在网上找到的内容,共识是不限制操作符,而是限制源,更具体地说是反序列化器 [1]。
我们如何在源中访问有关流环境状态的信息(即主题落后于当前偏移量的距离)。
目前,我们计划将我们的整个设置转换为 CoFlatMaps [2],并有一个控制流为所有主题发出当前的偏移滞后 - 低优先级流操作符然后根据高优先级流的滞后休眠。
你会如何解决这个问题? Tl;dr:有没有办法在任务管理器的源/反序列化器之间共享信息?
[1]http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/Rate-limit-processing-td11174.html
[2]http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/newbie-Share-state-between-streams-td7368.html
【问题讨论】:
【参考方案1】:对于需要回答这个问题的人: 我在 flink 的背压中遇到了类似的话题。我发现人们在源操作符中做了他们的速率限制并序列化部分。
有一个来自 flink github repo 的例子:https://github.com/apache/flink/blob/master/flink-examples/flink-examples-streaming/src/main/java/org/apache/flink/streaming/examples/utils/ThrottledIterator.java
【讨论】:
以上是关于动态限制 flink kafka 源的主要内容,如果未能解决你的问题,请参考以下文章
简析Spark Streaming/Flink的Kafka动态感知
SchemaRegestry组件原生的类和方法无法实现flink消费kafka的数据动态调整schema的情况--未彻底解决