1.前言
在 Apache Flink 1.5.0 中引入了广播状态(broadcast State)。广播状态模式指的一种流应用程序,其中低吞吐量的事件流(例如,包含一组规则数据/字典数据)被广播到某个 operator 的所有并发实例中,然后针对来自另一条原始数据流中的数据,进行关联操作。
2.broadcast State 官方介绍
3.broadcast State 使用示例
现在有两个流:一个是数据流(A)
,一个是广播流(B)
。这两个流的来源我们都可以自定义,这里我们就用平常最常用的 Kafka 来作为输入源。
场景:
我们在操作sql 时,经常会遇到关联维表数据的操作。接下来我们就在实时系统中使用关联维表数据这一场景,来介绍 broadcast State 的使用。
以前的解决方式:
1.
之前解决这问题,我们会对流中的数据进行 Transformation 算子操作,通过 new RichMapFuntion() 方式,重写其中的 open() 、close()、map() 方法。具体步骤如下:
上述方式,因为一条一查数据库,数据库如果不及时返回数据,就很容易造成阻塞。
2.
此时我们还有一种方式,那就是异步I/O查询。
异步I/O查询也仅能缓解阻塞问题,它仍然需要不停的向数据库发送请求。
以上两种方式的弊端:
都需要通过网络的方式,去向数据库发起请求,还有可能造成阻塞情况,这种方式下效率显然不尽人意。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。