Streaming ApacheFlink流缩放
我是Apache Flink的新手,正在尝试了解一些与Kafka一起扩展Flink流媒体作业的最佳实践。有些问题我无法找到合适的答案,包括:Streaming ApacheFlink流缩放,streaming,apache-kafka,apache-flink,Streaming,Apache Kafka,Apache Flink,我是Apache Flink的新手,正在尝试了解一些与Kafka一起扩展Flink流媒体作业的最佳实践。有些问题我无法找到合适的答案,包括: 您可以/应该运行多少流媒体作业?运行太多流是否存在可伸缩性问题?多少是太多 如果我们确实运行2000个流来满足业务需求,那么管理这些流的最佳方法是什么 从一个流到另一个流读取流数据的首选方式是什么?我们可以加入流、执行连续查询等吗 提前感谢您的支持,如果这些问题看起来有些基本,请道歉,但我正在尝试更好地掌握这项技术。我已经阅读了很多文档,但无可否认,由于我
- 流的数量没有限制,flink将根据作业管理器/任务管理器的内存/CPU、正在使用的并行化和插槽的数量进行扩展。我用纱线来管理资源。如果连接的流的数量很高,那么我们需要稍微谨慎一点,因为不是所有/大部分的处理都发生在一些任务管理器上,因为这会减慢流程。卡夫卡流程本身可能存在延迟,或者由于某些任务经理负载过重而导致的内部延迟肯定会出现,因此需要对此进行预防性检查
- 连续查询支持是最新flink版本的一部分,您可以查看flink文档
- 如果从一个数据流读取到另一个数据流,你的意思是用flink术语连接两个数据流,那么我们可以在一个公共键上连接它们并保持一个值状态。请注意,值状态在任务管理器中维护,不在任务管理器之间共享。否则,如果您暗示两个或多个流的联合,那么我们就可以以这样的方式构建FlatMapFunction:来自这些流的数据以标准格式出现 工会的例子:
val stream1:DataStream[userbookingfevent]=BookingClosure.getSource(运行模式).getSource(环境)
.map(新的ClosureMap函数)
val stream2:DataStream[UserBookingEvent]=BookingCancel.getSource(运行模式).getSource(环境)
.map(新的CancelMapFunction)
val unionStream:DataStream[UserBookingEvent]=stream1.union(stream2)
---
导入org.apache.flink.api.common.functions.MapFunction
导入org.json4s.jackson.JsonMethods.{parse=>\u0,parseOpt=>\u0}
导入org.json4s.native.JsonMethods_
导入org.slf4j.{Logger,LoggerFactory}
类CancelMapFunction扩展了MapFunction[String,Option[UserBookingEvent]]{
覆盖def映射(在:字符串中):选项[UserBookingEvent]={
val LOG:Logger=LoggerFactory.getLogger(classOf[CancelMapFunction])
试一试{
隐式惰性val格式=org.json4s.DefaultFormats
val json=parse(in)
..............
}抓住{
案例e:例外=>{
LOG.error(“无法分析+e.getMessage中的取消事件=“+in”)
没有一个
}
}
}
}