您当前的位置: 首页 >  flink

暂无认证

  • 3浏览

    0关注

    92582博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

深入了解 Flink 的可扩展性状态

发布时间:2021-10-28 08:57:44 ,浏览量:3

在这里插入图片描述

1. 有状态流

从高层次上讲,我们可以将流处理中的状态视为算子中的内存,在内存中记录有关过去输入的信息,并可以作用于将来输入的处理。相反,无状态流处理中的算子仅关注当前输入,不关注上下文以及过去的输入。用一个简单的示例来说明这种差异:假设我们有一个数据流,事件格式为{event_id:int,event_value:int}。我们的目标是提取每个事件的 event_value 并输出。我们可以通过简单的 source-map-sink 管道轻松实现,其中 map 函数从事件中提取 event_value 并将其发送到下游的 Sink。这是一个无状态流处理的实例。如果我们仅在当前事件的 event_value 大于上一个事件时才输出,这该怎么办?在这种情况下,我们的 map 函数显然需要某种方式来记住上一个事件的 event_value,因此这是一个有状态流处理的实例。

2. 状态

Apache Flink 是一个大规模并行分布式处理系统,可以进行大规模的有状态流处理。为了实现扩展性,Flink 作业在逻辑上分解为算子图,并且每个算子在物理执行上分解为多个并行算子实例。从概念上讲,Flink 中的每个并行算子实例都是一个独立的任务,可以在自己的机器上进行调度(Shared-Nothing 架构有网络连接的集群中)。

为了实现高吞吐量和低延迟,必须最小化任务之间的网络通信。在 Flink 中,用于流处理的网络通信仅发生在作业算子图中的相邻边&#

关注
打赏
1653961664
查看更多评论
立即登录/注册

微信扫码登录

0.6490s