00:00
好,那接下来呢,我们重点看一下这个第二步。对吧,我们来仔细思考一下。呃,那大家有没有听说过在公司当中呢,这个东西它。业务表能到达上千张或者几千张表,对吧,几百张,上千张甚至几千张表,有没有听过这个,多多少少有所耳闻吧,对吧?好,那我要问你,那你觉得在公司当中他有这么多张表,是刚开始的时候就有这么多张表,还是说。慢慢慢慢的增加上来的。嗯。你觉得他应该是怎么来的?跟着你的工资涨,不是啊,我说的不是说你处理的表,而是说整公司整个的表。
01:01
对吧,啊,那肯定是什么。慢慢慢慢增加的,那也就是说现在我们46张表,它有十张为表。那过两天啊,不一定过两天,过了两个星期对吧,因为我们现在可能公司在处于这个高速发展期间,对吧,过了两个星期或者说一个月可能多了一张表,又过了两个星期,一个月就多了一张表,哎,其中这步伐有这个维度表吧,好而且这个维度表你需要诶有十张维度表变成11张,12张,13张,14张,好,那一旦。增加了这个维度表。啊。你这个代码的怎么样。啊。你要做一个什么事?就随着这个维度表不断的增加,我们这个代码要干什么事儿。对了,好,这里边。
02:00
有问题对吧。问题是什么呢?是维度表会增加。对吧,未来呢,维度表会增加,那么我们就需要跟着怎么样好,你现在是十张写了,集合当中有十张表,现在要改成11张,那你就变成11张,你要干什么,修改代表。就低对吧,修改代码之后还要干什么。重启吧。对吧,把老的停掉,把新的提起来,诶,重启。对吧,你要做这两件事情。呃,你业务数据呢,增加的频繁,我这个事情就做的就很频繁,这个就很不好。对吧,我要经常去修改这个代码啊,那我们呢,从两个方面来考虑这个问题啊。首先你要想,如果你修改了代码,那你一定会要重启,那不用说。
03:02
对吧,你是一定要去做重启的,这个不用多聊吧,对吧,因为你修改了代码,所以你一定要重启啊,所以呢,我们从两个方面第一啊,我们解决的第一个从哪个方向呢?我只重启不修改代码。对吧,啊,我们要达到这个目的,因为这样会更好一点,因为你修改代码之后,你要编译上传,对吧,你要做这个事情。是这样子的。对吧。啊,要不修改代码,只重启任务。只重启任务懂吧,好,那第二个。目标叫什么呢?不修改代码,也不重启任务。就直接让他一直去运行,那同学可能懵了,一直运行你加一个表,我怎么处理呢。
04:06
对吧。就是我们得想办法,怎么样得动态的由外面去调节代码,不停的情况下去增加一张啊,我们得想嘛,现在所以呢,我就分两个阶段让大家去思考。对不对啊,我们不不是一步到位的啊,分两个阶段,你得慢慢来。不能着急对吧,一步到位呢,可能大家没有这个水平,但是呢,慢慢来可以啊,那我们想一想第一种啊,呃,我不想修改代码,但是呢,我要修改里面业务逻辑这种感觉对吧,但允许你重启。你想到了可以怎么做?怎么样解决,用什么方法?想一想。哎,周总说的叫什么配置文件。
05:04
啊,配置文件很好。那你不是要十张为表吗?未来不是可能变成11张为表吗?好,那简单对吧,我把你十个维表所要的这个信息怎么样写到配置文件里边。对吧,好,你呢,现在要变成11张,我怎么办呢?我把任务停了。我把配置文件呢,我加一个表。对吧,再重启一下。是不是我们达到了我们的目的,不修改代码,只重启任务?这个思路是不是容易想到,我估计底下也有同学想到了,但是呢,可能还没来得及打,对吧?啊梁总呢,已经把这个打出来了,对不对。叫这个配置文件。啊,叫这个配置文件。能理解吗?配置文件是不是可以我不在代码里面写死对吧?我用配置文件的方式来指定我们所需要的这个维度表。
06:10
你们十张嘛,对吧,好,你停掉,我把配置文件一改。背好了吗?对吧,那这个就是我们典型的所有的框架都这样做的,因为框架你要去改源码重新编译,现实吗。每次都这样做,不封了吗?这个框架还有人用吗?没有人用了,所以人家给你了什么大量的配置文件,你要修改什么东西,你就修改配置文件,但是在修改完之后,我们都跟大家说一定要注意什么。分发。重启。记得吧,配置文件的方式,这个没有问题吧,没有问题扣一好吗?不要困了,不要犯困了啊,不要趴在那儿。不要趴在那听课,作正了,扣个一动动手好吧。啊,周一上课就是费劲是吧,一个个的就就没有精神无精打采的。
07:02
不要犯困,扣个一啊。对吧,这第一个这个思路我相信很多同学能想到,好,那接下来我们随之而去想这个什么呢?第二种。诶有没有办法不重启读配置文件,对,就是我们要想这个问题对吧。就什么事呢?呃,那现在的问题呢,就是我们用配置文件了,但是呢,还需要重启,原因在于什么,它需要重启原因在于就是这个配置文件啊,它只有什么。只有在。任务启动的时候才会去加载一次,所以你需要重启,那么我们的思路呢?叫。放开对吧,呃,我呢这个配置文件。它不再启动的时候也可以被加载,那可以怎么做对吧,如果说你这里边有doing新增了,该怎么做啊,那个防御提出来了,对吧,定时任务。
08:06
定任务好,那除了定时任务还有没有办法?数据库添加配置表。从数据库读。你从数据库读就不是。启动的时候去读一次吗。说具体一点还没有说到位。淘淘。还差点意思。对。实时监控代码获取过滤条件的时候,从MYSQL里边去读,一步到位了。
09:02
防御一步到位了是什么意思?啊。慢点跟不上了吗?弗CDC监控行程配置流。啊。有同学已经跟不上了,但有同学呢,跟着我的思路在慢慢的思考,对吧,一定要跟上啊啊。有没有道理,非常有道理,这边呢,就有两种方案对吧,就有两种方案啊,那第一个这样吧,我把这个这样写。没有一步一步走,直接跳到了最终答案。不是啊,配置文件由这个过来的呀,对吧,啊一步一步来的对吧,所以呢,这边有两种方式对吧,第一个。啊,第一个怎么做呢,就是刚才像那个应该是方玉提出来的吧,对吧,定时任务。
10:01
定时任务读取配置信息,对吧,我每隔一段时间我去加载一次配置信息,这样的话是不是就是避免了刚才我们所说的问题,怎么样,你呢,只在启动的时候加载一次,现在呢,我是干什么?每隔一段时间我就加载一次,我就不是启动的时候加载这么一次了,对吧,我每隔一段时间加载一次,每隔一段时间加载一次定时任务可以吧,而代码里面写定时任务大家会吗?因为会啊,在代码里边啊,在代码内部,那你要去读的话,你肯定写在open方法里边吧,把这个定时任务开起来啊,比如说你要处理这个过滤啊呃,过滤呢,你得起码得有一个。Rich。对吧,Rich,因为你要去加载一个文件嘛,你不管那个信息在哪,你是文件也好,那你要有IO流对吧,你要是放在MYSQL,你要有这个JDBC连接对吧,所以肯定放在open里边去启动这个定时任务是最好的,对吧,不断的加载一次啊好,那定时任务会写吧,在代码里边,其实Java里边给你提供了,等会我们写代码的时候再说吧,或者说这个东西呢,我给大家写一下啊。
11:13
呃,我因为这个方式呢,我不写它的实现,你懂吧,不写它的实现,所以呢,我给你稍微说一下这个啊。在Java代码里边如何去写这个电视任务啊,但是没关系,我呢,呃,K上面有。我的K的上面有这个代码,有定时任务的代码,因为早期呢,嗯,用过有的班呢,讲过这个定时任务的啊,有的班呢,用的其他的方式啊。好,那这里边Java里边定任务应该怎么写啊,很简单,你有一个time。然后拿着time呢去schedule了调度对吧?好,那调度呢,这边第一个是time task。
12:08
Task里边有这种方法,很明显的是一个线程对吧,启动线程好,那接下来看啊,这后面参数,呃,有什么呢?有一个delay。你看这两个,一个periodic这个东西我们见过吧。在聊那个flink worldmark生成的时候有两种方式,一种是periodic,一种是A,对吧?啊periodic呢,定时的。啊,每隔一段时间啊,然后第位就是什么呀,第一次执行有一个。延迟。对吧,然后接下来每隔一段时间执行一次,好,还有一种就是data,哎,我第一次执行是在哪个时间执行,对吧,然后之后每隔一段时间执行一次,就这个。就这东西,你就下载这个配置文件OK吧,就这样了,比如说这边呢,我给一个。一秒以后或者给个零吧,给个零就是立马第一次立马执行对吧,然后呢,比如说生产环境当中,你分钟级别的对吧?啊,你可以写一个,诶,那我五秒钟每隔五秒钟执行一次,但是你的任务在这儿啊,在这里边写懂吗?在这儿写你的任务。
13:12
啊,读取配置文件懂吗?这是我们在代码里面去写这个东西啊,那这个呢,给你写到这儿。啊,如果感兴趣的可以去研究研究这个东西,对吧。好,就是它啊,这是第一个。呃,那么。定时咋不带行?有什么想法等会儿再说啊,地势不太行,我都说过,我带着有的班级都写过这种方式,你说不太行,你今天要必须要给我理由好吧。第二个。嗯,不太行,我还给你写代码,我不就带着你分析他不行了嘛,他肯定可以啊,对吧,而且我说我给他让他有带着有的班级你必须要给我理由,好吧,齐总。
14:00
第二种方式是什么?啊,那这个呢,是我主动的去加载这个,每一次读全量对吧?啊,那我这个文件呢,我可以增量的方式对不对用。监控用监控的方式对吧,监控。配置信息的变化。配置信息变化。对吧,那这边呢有两种方式,第一种呢,我们是放在这个配置文件中。放在文件中,咱们可以用什么用from?啊去。监控这个文件。对吧,监控文件,呃,然后呢,把数据写到卡夫卡,在接下来呢,用弗Li读取,那这样的话被我们弗Li就拿到了,对吧?另外一种呢,放在MYSO中。对吧,我们直接可以用什么flink CDC来读,直接形成了硫。对吧,它呢直接就是一个流,而这个内容呢,它也是形成一个流,那这两种方式大家说哪个好啊。
15:07
就是监控配置信息的变化里边哪个方式好啊,很明显第二种吧,因为它经过数据流更短,是不是上面这个是不是更长啊,它经过这个弗经过卡卡,这个直接经过弗林结束了。对吧,下面这种呢,直接经过flink是不是就结束了。对吧,直接经过flink就已经结束了,而这边呢,还要经过from,再经过卡夫卡,这个链路呢,很长,那我们有短的,那肯定用短的呀,对吧,时效性会更好一点,毕竟是实时嘛,对吧,搞这么多不太合适啊,好,那这是第二种,没有问题吧,但是现在啊,我的聊天室又这样,因为大家看到我刚才显示又什么网络铃断了啊,真有bug,其实网络没断,他说断了啊,等会儿呢,我得重启一下啊,现在呢,你抠这个东西我看不到。
16:00
我看不到好吧,好,那这块呢,咱们就搞定,这是我们的一个思路,也就是说我们要用的就是这种方案,对吧。要用的这种方案,其实而且用的是这种。啊,因为老的我们用我我带过洗过这种对吧,现在呢,我们都用这种就好了。啊,直接用这种就搞定了。好,这是我们思路分析的第二啊,因为之前呢,我们要不断的去修改代码,重启任务,现在呢,我们就不需要修改代码,也不需要重启任务,动态的去做这些事情,对吧。
我来说两句