Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Streaming ApacheFlink流缩放_Streaming_Apache Kafka_Apache Flink - Fatal编程技术网

Streaming ApacheFlink流缩放

Streaming ApacheFlink流缩放,streaming,apache-kafka,apache-flink,Streaming,Apache Kafka,Apache Flink,我是Apache Flink的新手,正在尝试了解一些与Kafka一起扩展Flink流媒体作业的最佳实践。有些问题我无法找到合适的答案,包括: 您可以/应该运行多少流媒体作业?运行太多流是否存在可伸缩性问题?多少是太多 如果我们确实运行2000个流来满足业务需求,那么管理这些流的最佳方法是什么 从一个流到另一个流读取流数据的首选方式是什么?我们可以加入流、执行连续查询等吗 提前感谢您的支持,如果这些问题看起来有些基本,请道歉,但我正在尝试更好地掌握这项技术。我已经阅读了很多文档,但无可否认,由于我

我是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”)
    没有一个
    }
    }
    }
    }