微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Flink笔记(二十八):Flink Broadcast State 状态广播

1.前言

       在 Apache Flink 1.5.0 中引入了广播状态(broadcast State)。广播状态模式指的一种流应用程序,其中低吞吐量的事件流(例如,包含一组规则数据/字典数据)被广播到某个 operator 的所有并发实例中,然后针对来自另一条原始数据流中的数据,进行关联操作。

2.broadcast State 官方介绍

       Flink Broadcast State 官网介绍

3.broadcast State 使用示例

       现在有两个流:一个是数据流(A)一个是广播流(B)。这两个流的来源我们都可以自定义,这里我们就用平常最常用的 Kafka 来作为输入源。

场景:

        我们在操作sql 时,经常会遇到关联维表数据的操作。接下来我们就在实时系统中使用关联维表数据这一场景,来介绍 broadcast State 的使用。

以前的解决方式:

        1.之前解决这问题,我们会对流中的数据进行 Transformation 算子操作,通过 new RichMapFuntion() 方式,重写其中的 open() 、close()、map() 方法。具体步骤如下:

  1. open() 方法中连接数据库
  2. 在 map() 方法查询数据库中的维表信息,并将流中的数据与数据库查询的数据进行关联,从而达到关联维表的目的;
  3. 在 close() 方法关闭sql相关流。

       上述方式,因为一条一查数据库数据库如果不及时返回数据,就很容易造成阻塞。

       2.此时我们还有一种方式,那就是异步I/O查询异步I/O查询也仅能缓解阻塞问题,它仍然需要不停的向数据库发送请求。

以上两种方式的弊端:

       都需要通过网络的方式,去向数据库发起请求,还有可能造成阻塞情况,这种方式下效率显然不尽人意。

扛麻袋的少年 发布了267 篇原创文章 · 获赞 49 · 访问量 6万+ 私信 关注

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐