00:00
如果我们比较细心的话,其实可以发现对于两条流的connect的操作还有另外一种用法,在前面我们介绍的两条流进行connect过程当中,Data stream里边如果直接调用方法的话,我们发现可以传入一个data stream,它还可以传入一个另外的参数,传入一个broadcast stream。这又是一种什么样的用法呢?哎,这里传入的broadcast stream是一个广播流,那这个时候两条连接之后得到的呢?就是一个broadcast connected stream,这是一个广播连接,这种连接方式呢,它比较特殊,它主要是用于需要动态定义某些配置项的场景。呃,因为我们有一些场景下啊,正常情况下我们可能会想到,如果要去做一些配置的话,那应该去写配置文件呀,但是有一些场景呢,这个配置项有可能是实时变化。
01:06
比如说有可能我们要设定一个阈值,当前处理的时候有一个阈值,这个阈值呢,随着时间的推移,或者说随着当前业务的规模的增长会发生变化。而且呢,它是。变化的还比较频繁,所以我们现在就不能直接放在一个文件里面,因为如果放在文件配置文件的话,很显然接下来我们就需要重启应用,然后重新读取这个配置文件了,那能不能我们做一个动态的更新调整呢?当规则或者说配置项实时变动的时候,这个时候呢,我们可以把这个变动的规则变动的配置项。用一个流来捕获它的数据,也就是说当前我们是有两条流,一条流是标准的数据流,那就是当前我们的data stream,然后另外一条流呢,它应该是一个。
02:03
一个配置项的流,这个配置项的流那应该是针对下游所有并行子任务都应该生效的。所以他应该直接广播给下游的所有并行责任啊,那我们自然就想到,这里边就涉及到了data stream和一个广播流broadcast stream,它们俩之间的一个连接。连接起来之后,我应该是以这个广播流里边的配置项作为标准,去处理data stream这个数据流里边的数据,主要是想要做这样的一个操作。那这里面会涉及到一个问题,就是。我们当前的。对应的这个broadcast stream,它作为一个广播流,它是怎么样能够把当前的这个配置项广播给下游的所有数据呢?诶,这里它需要把它保存成一个状态,这个状态就是所谓的广播状态broadcast。
03:07
关于状态这一部分,我们会放在后边再做详细的讲解,那这里只是简单的做一个介绍,那么广播状态的底层呢,其实是一个一个map数据结构,类似于映射map这样的一个结构。在代码实现上呢,我们可以直接调用data stream的。Broadcast方法。我们会发现broadcast也是有两种调用方式,一种是之前我们说过的数据传输方式啊,就是直接当前的数据广播到下游去,那另外呢,还有一种调用。这里是要传入一个map state script,这就是所谓的映射状态描述器,这样的话就相当于把我们的规则或者说配置项保存成了一个映射状态,一个类似于map的数据结构保存在这样一个状态里,然后广播到下游去。
04:07
如果调用了这样一个broadcast方法后,我们发就是个broadcast,然后接下我们自然就是。用本身当前得到的这一个规则的流,它应该是一个broadcast stream,然后跟本身的数据去进行一个connect,它俩连接在一起,这个连接必须有,必须有对应的这个方法,必须有对应的顺序,那就是data stream去connect broadcast stream。这个得到的呢,是一个。刚才我们看到的。是一个broadcast connected stream啊,那么接下来broadcast connected stream又可以去调用对应的process方法啊,那这个process方法里边当然传入的也是一个process function了,这就是我们提到的process function家族里的另外两个broadcast process function以及的broadcast process function,那把这个broad process function传入之后,最后得到的当然又变成了一个single output stream operator。
05:23
那最终我们知道就是又转换成了统一的data stream。那么对于这个broadcast process,它里边的具体的我们会发现类似于前面我们介绍connect,呃,里边实现的那个Co process function啊,里边一国两制,那需要有process element1 process element2,而现在呢,也类似于一国两制,只不过现在是有一条数据流和一条规则的广播流,所以它是叫做process element和process broadcast element。
06:01
整体来讲跟两条流的的操作非常类似的。关于广播流和广播状态的处理,我们会在后边再做详细的介绍。
我来说两句