00:00
好,那么紧,你不要光盯着代码,那你会很混乱的,接下来回到文档,文档我是按照一定思路来写的啊,那这个时候呢,我们。看完刚才刚才看完这个算法了,那后面还有一个方法,我们瞅一眼啊,看一下名字就行了。啊,看注释吧啊,不看逻辑的来调整每个组对应圈统个数属于优化范畴,也就是说他自己会帮我们做一些优化啊,那你点进来啊,他就是做一些判断啊,这一块咱们就不去看了先啊。这里也有注释啊,你代码看不懂啊,一时半会理解不了,你就看他的解释实现什么功能,这个不过多啰嗦了啊,咱们回退啊,再回退,回退到哪呢。呃,回退到这assign。Fair公平分配这个方法里啊。
01:00
咱们刚才是啊,不对,还得再回退。啊,回退到这个schedule这一层啊。对,是这没错啊,差点懵了,刚才我们看的是你到底如何公平分配,接下来往下走啊,给大家先看一个东西。执行模式等于什么?Stand alone?是不是写死了?对吧,大家知道他写死就行,然后后面还怎么样。还在这判断有意义吗?你发现没有,他没有其他地方复制了这个地方写死之后他就把它。传给什么?传给咱们任务组的一个参数里面去了,并没有重新复制,所以他这一段这一段的判断逻辑是没有意义啊,但其实是什么,因为咱们这个开源的3.0是阉割版。严哥。什么叫阉割登弄就表示单机版,同学们啊,就是单机版,嗯。
02:06
就它的设计其实是支持分布式的,什么叫分布式呢?简单啰嗦一下,咱们是不是有一个叫。呃,Container是不是还有一个任务组?Container,我简称TGC,好吧,那我们现在单机版就是说他们都在一一个节点一个进程里面,如果他们不在一个节点,不在一个进程,那就是分布式,它的设计是可以实现的,但是开源给到的代码就写死了啊,阉割版。因为它分布是可能。嗯,你一分布式问题就多了,各种东西各种问题啊,跨节点啊,这个那通信啊,状态的一致性啊等等等等啊,很多问题很麻烦的。然后要考虑很多分布式的算法一致性是比较麻烦啊。然后行,咱往下走吧。
03:02
前面啰嗦这么多啊,再往下走,这是真正的一个调度逻辑,这边咱们就看一个简单的事儿啊,不要怕。点进来。呃,进入到了一个抽象类里面的一个schedule方法,这边它的核心逻辑只有一个。启动什么任务组,前面你不是组完队了吗?接下来就是由调度器来帮你启动任务组就完事了啊呃,再点一下,点进来之后发现到了一个抽象内,不要慌,怎么样CTRL加H。那这边我们可以看到只有一种调度器叫登的。就没了,呃,那你。我们找什么找这个方法好搜在哪呢?这个方法在这个第二个抽象类里面,下一级的抽象类里面啊,这个是单里面是没有的,因为这个原先有多种实现,这个方法是大家共用的。
04:03
好,来,大家就看一个事儿就行了,这玩意儿是什么?是不是线程池啊,对吧,也就是说其实你分了那么多组,最终还是要去走线程池啊,线程池,因为它是毕竟单机的嘛,单进程的。那最终这个就去执行什么呢?它封装了,把任务组封装成了一种对象叫啥呢?叫什么什么runner。哎哎,大家注意咱们这个并发等于线程数吗。不是啊。这个我们调度就看到这,如果下一步要看到任务执行的话,应该怎么看,大家想一想,你不是线程池执行这个东西吗。对吧,这个肯定是呃实现的runner。
05:04
那接下来是不是看他的一个什么,看这个类型里边的run方法就行了,对吧,这是这么一个逻辑啊。
我来说两句