00:00
好,那接下来呢,我们来奔着终极目标去,对吧,我们希望可以做到一个什么事呢?连代码不修改对吧,连任务都不重启。就是如果你要加表,我都不需要重启任务,好,那我们就根据第一步我们的优化来思考,那我问大家,呃,我们把这个维表啊。字段对吧,为表的这个表明字段,我给它放到这个配置信息里边。啊,放到配置信息里边。呃,他就不需要修改代码了。它但是呢,它需要重启。那我问大家,他为什么需要重启?就是这一步重启的原因是什么,对吧,我们还是一样的,我们解决什么问题,我叫。找到它的原因,然后才能解决,就跟刚才一样,我们为什么要修改代码,是因为写死了,那我就不写死对吧,从外面传我就不用修改代码了,那优化一里边他已经做到不修改代码,但是他要重启,那我们要想做优化二,我就得想一想。
01:09
他为什么?要重启任务。对吧。重启任务的原因在于什么?来,那我们看一下方总所说,说重启才能让配置文件生效。啊,这个是不是就是我们经常做的事啊,就是我们一直告诉大家干什么事啊,说你呢,如果说要去修改一个。已经搭建好的框架的配置文件。比如说。什么h base对吧,所有这些框架。让你把配置信息做一个分发,分发以后还要做什么事。
02:00
分发以后还要做什么事?对,要重启集群吧,啊,那原因就找到了,那你看我们修改完了配置信息要重启进去,为什么要重启,因为配置信息这些东西我们所写的方式对吧,它只在程序启动的时候加载。一次。啊,它只在程序启动的时候加载一次,那也就是说意味着我程序已经启动了,你再去修改,我获取不到你修改的内容。原因是不是在这儿了,对吧?好,那你想,如果说我不想重启任务。我该怎么做,该怎么去解决这个问题。
03:05
想一想。程序启动以后,就是由于它只在启动的时候加载一次,我程序已经启动了。你再去修改这个配置信息,不好意思获取不到。那我们核心的解决。是不是就在于程序启动以后?还能获取到配置信息当中的变化。对不对。对吧,我们的方向是不是就有了,我们的解决方向就有了,对吧,就是方向什么呢?我们写一下,就是让。程序在启动以后还可以获取配置信息中增加的内容。或者说你说修改的内容对吧,增加也是一个修改吗?因为对于这个维表而言,我们基本上就增加就完了,对吧,就是增加就完了啊,增加一个维表信息啊,好,我们要获取这个增加的内容。
04:18
对吧,这是我们的方向,我们要做到这个事情。好,那大家告诉我具体实施呢?具体实施我们应该怎么做呢?就是我们怎么能做到让程序在启动以后。还可以获取到这里面内容。哎,你看于总这边就说了第一个定时任务啊,那我们之前在学习的时候,是不是经常会发现有很多的。框架。他做一个事情是不是有很多有有多个参数啊说诶内存达到多少,他会触发这个,或者时间到达多少触发这个,是不是经常会碰到这样的参数,它一般呢,根据两个参数对吧,一个时间一个大小。
05:17
对不对。是不是有遇到过吧,类似于这样的内容比较多吧,诶一个根据时间,诶,假如说我批量写出对吧,我达到1万条我写一次。假如说没达到1万条。那假如说我现在是凌晨对吧,它数据量非常少,你达到1万条不太现实,那我就不写出嘛,一直在这卡着也不合适吧,所以呢,我们可以考虑什么。用时间的方式。是不是出发写出啊。用时间的方式触发它的一个写出是不是对吧,有这样的方式,好第一个定时任务啊,那你看这个呢,我只在启动的时候加载一次。
06:01
我如果使用了定时任务呢,每隔一段时间啊,这边呢,就是每隔一段时间加载一次,这个是不是可以解决我们的问题啊。对吧,可以解决我们的问题,好,那我们再想一想,还有没有什么好的方案。广播流。Blog。哎,那个方总提到了。广播里说的不具体。对吧,怎么就广播流了,广播流为什么能做到这个事儿啊,对吧?啊不具体啊,Blog能懂什么意思吧,就是使用监控冰帽的,我们这样写。
07:07
监控并log的方式。对吧,好,那监控blog一旦这个方式可能会更好一点,对吧,一旦怎么样发生增加了,一旦增加了数据啊,就是配置信息,对,一旦配置信息增加了数据可以。立马获取到对吧,可以立马获取到。啊,它是这样子的,可以立马获取到。好。嗯,那这个跟定时任务相比,大家觉得哪个更好一点?定时任务这种方式是不是里边可能会有一点小小的瑕疵啊。是不是可能会有一点点小小的瑕疵,大家想是不是?
08:00
瑕疵是什么?就是你你比如说啊,你定时任务,你这个不能太频繁吧,因为你这个配置信息它不是那种高频的变化,比如说我呢,十分钟加载一次。我十分钟加载一次,呃,那这里边儿呢,你无法把握的一个事情是什么,就是说有没有可能我刚加载完一次啊,刚做了一次加载,然后呢,下一次加载是不是在十分钟以后啊。对吧,这十分钟后啊,第二次加载是不是在十分钟以后,好,那有没有可能我在这个位置啊,就是你加载完之后,我在这儿呢,增加了一个维表。我在这添加了一个维表信息,但是不好意思,你这个维表信息什么时候才能读到,十分钟以后才能读到。对吧,但是有可能我在这个时间点,业务数据当中,关于这个维表就已经来数据了,那么这么长时间关于这张表的数据是不是丢了。
09:00
能,能明白我说什么意思吗?能听懂吗?就是用定时任务的这种方式。它里边是不是可能存在这样的问题啊。对吧,我刚加载一次,我加载完我发现添加了,因为这里面是自动的,对吧,它自动的那我也没法控制啊,对吧,有可能诶刚加载完我添加了一个配置信息,添加完以后这个配置信息呢,我出具就来了,对吧,那我要十分钟以后才能读到这个配置信息,那么这么长时间的。假如说这五分钟你过来,数据是不是相当于丢了。能理解吧,其他同学呢?只有三个人能明白吗?其他同学呢?这个应该是可以理解的啊,那呃,监控并log这种方式是不是就不会有这样的问题啊。
10:06
对吧,诶它就不会有这样的问题吧,啊这个呢定时任务啊,当然这个定时任务呢,你要写的什么将如果说你要用这种方式将定时任务写在。Open方法里边对吧,你起码得用一个负函数,然后呢,Open你要保证什么呢?你要保证在我们数据到来之前,你得有配置信息,你得加载过一次,对吧,所以呢,写在open方法里边是最好的,对吧?它的注意事项就是这个啊,当然呢,它里边有瑕疵,但是这个其实可以人为避免,你可以干什么事呢?假如说。你。写的十分钟获取一次啊嗯,你让业务那边要做到一个什么事,假如说他要加表对吧,他得至少在十分钟之前告诉你我要。增加这个表写你要这个表。
11:02
对吧,你在十分钟之前,你把这个事情做一下,假如说我在你业务增加这张表15分钟之前,我就把配置信息加进去了,它就不会出现这个问题了,对吧?这个其实可以通过人为的去控制啊,可以人为的控制啊,当然了,毕竟是有一点瑕疵嘛,对吧,那我们可以用第二个监控这个blo的方式,对吧?也就是说我们可以把配置信息。写到my circle里边对吧?诶,那我们就可以立马获取到,然后用flink CDC去读取对吧?啊,当然除了这种方式,我能不能用写到文件里边,然后用去监控。然后芙蓉查的卡夫卡,然后呢,再用弗林去消费也可以,但这个流就更长了,对吧,啊这里面呢有两种啊两种方案对吧,第一个。呃,监控。监控配置信息啊,这个监控配置信息对吧,第一个配置信息呢,我们写到这个my so log。
12:04
对吧,写到mylog用flink CDC监控对吧,直接形成流好,那这里边呢,其实还有第二种方式。我们用什么呢?我们用文件来存储这个啊,但是文件的话呢,那这个理由就更长了,用from去用from t source去监控这个文件,对吧,监控到文件之后呢,把这个数据传到卡夫卡,然后呢,再用什么flink消费。创建流对吧,这个呢,流程就长一点,那这两个大家肯定知道选谁啊。选这个。My circle b log的方式吧,哎,他一看就会给给优一点对吧?好,这是我们方案的一个讨论对吧?好,那既然我们对于优化二有方案了。
13:01
那我必然按照优化二去实施啊,因为他未来是不需要修改代码,也不需要重启任务的,我就得按照这个来实施,对吧,我们就接下来就要讨论这个东西应该如何做。对吧。
我来说两句