00:01
好,我们来看啊,这个我们是怎么样获取到,呃,我们。这个这个这个这个资源时间资源的啊,流空规则的,我们看一下它,嗯。就跟的是谁跟的他啊。是他内部的匿名,匿名内部类里边这个。一个一个。方法啊,哎,你看他跟的是这个apply。然后呢?这是flow manager,大家看啊flow manager看到它是不是很熟悉啊,就我们自己,呃呃,不是通过DA,我们代码里边设置我们的flow入的时候是不是就用过它,只不过那时候用的是是怎么用的,是这样用的。Manager。
01:00
点什么lot?是吧,我们这我们给它设置进去的,现在呢,我们需要给它获取到,所以这是获取。一到啊,所有资源的。呃。这个这个留空。规则。所有资源的这个map。Map的key为资源名称。Value。该资源向。嗯,加加载的。所有。呃,流控规则。是吧,哎,然后我这边。这获取到所有的,那我就返回。对吧,就是。我去。
02:00
指定资源的所有。对吧,他就是这样获取的。就这样获取的。呃,这个获取到以后,紧接着我逐个进行,呃,这个这个这个规则的应用了,判断它这个请求是不是能够通过我跟你来。首先在这儿啊,干嘛呢。从。规则中。获取。呃,要限定的。来源。你如果这个来源为空。如果这个来源是空,我直接就通过了。嗯。限定的。来源。则。
03:00
请求直接通过。请求直接通过,那么请求直接通为什么呢?其实也很简单啊,大家看你你你这个这是个呃,这是个我们的follow,这是个呃规则吧,我们这个规则是吧,我我这个规则限定的来源是什么。也不是default,你注意这个不是default default是不限定来源。那那我现在这个资源。它的来源是空说明什么?说明我是发出请求的。不是别人来访问我的。明白吧,不是别人来访问我的。所以他。这样的话,这个资源啊,这个资源或者说这个请求他就直接就通过了。你就不用不用匹配这个规则,这第一点第二点。呃,如果是flow入,大家看一下flow里边啊。
04:05
你看它的来源都有默认值default。对不对。然后呢?其他的规则的。这是这是好多规则啊,好多入都是继承者AB入。它里边可是没有。这个是没有默认值的。也就是说。也就是说,如果这个。是空,他肯定不是啊,我们的这个主。那是什么?我们不用管它。那那这样的话,那你这个规则就直接我这不用管了,我直接return出就行了,通过了。是吧,啊,这他为闹的情况啊,然后呢,这个是是。看啊。呃,这是,呃怎么说呢。呃,使用。
05:00
规则。处理。为什么鸡群?这处理的集群调控。这个呢是使用规则。处理啊,这个这个单机。省规则处理单机流空啊,我们就分析这个单机流空啊,分析这个单机流空我跟你来。这个单机的优酷。呃,这首先啊,这这这什么,又或许node node给大家说过,Node里边就是统计数据的,用于统计的啊,所以。我是先拿规则contest啊,和我们这个default note这个呢,我我先给他通过这样写吧,通过规则。选择出的。
06:00
规则,嗯,实际上就是形成一个规则。就这个规则弄的。呃,如果这个规则弄的。没有选出来。没有选择说明,说明什么说明没有规则。若。没有选择出no。说明没有规则。没有规则的直接。返回。表示。通过你要没规则,所以我直接就返回处了。否则呢?否则就这这是干嘛。规则。进行。竹。项检测。使用规则,先用主讲检测这个检测啊,你注意啊,Get是吧,入点get.can pass。
07:10
然后你一看,你就知道这是什么东西了。Before the controller。Rate limit controller warm up controller warm up rate limit controller,诶这个是不是我们我们刚才。我们刚才在这儿说过,是不是这个。效果呀。对不对,这个流我这。就是他。所以我们说了这里边儿这四种嘛。啊,这个是我们快速失败。我们一会儿跟一下他这个。啊limit,呃,是这个这个这个这刚才说了啊漏洞啊,漏斗算法或者漏啊算法限流是吧,这个one map实际上本质上是零块筒。这都是改进过的,这是它组合一块儿的。
08:03
那我们现在跟一下他快速失败。哎。这快速失败啊,首先。在这。这是获取什么?注意啊,这这个我给这儿加个注释。就是。快速失败。的。流控。效果。中。对。通过性。这他啊,Can pass是吧,那这首先我获取。获取到。因为你要看你能能不能通过是吧,那我就看我当前这个QPS。和你的阈值。它的大小关系。所以。那那那怎么办,那我得先,或者这是我们当前的,就你这一次啊,你这一次代表几个,一个顶仨就那个东西。
09:09
然后呢?我还得获取到你当前你注意这有个时间窗啊,我们一会儿再说,详细说这个时间窗。你你知道这是获取什么,获取当前时间超。嗯。中已经。已经,呃,这个这个这个。统计的。数据。啊,这是已经统计好的数据,再加上我这一次的数据。和我们的阈值相比。对吧。若啊,已经。统计的数据与。本次请求的。数量和。
10:04
大于。嗯,设置的阈值。那大是怎么了?大于70就就是你不管怎么样。这中间啊。大家看我不管你中间这一堆怎么样。最后返回false。这。啊,这个这个这个。无法返回。False。表示。没有。通过检测对吧。小于等于。阈值。返回。表示通过。检测。是这个意思吧。当然他这又碰到了一个东西啊,这是什么?我们这个优先权的问题,这个我们说了它的值是副词,所以直接这就结束了,这副词直接就结束了啊。
11:09
但是你如果说有这个优先权这个问题,那你在这儿还得等待,还有这个等待时间啊什么的。是不是这个东西啊,在判断,我们这个就不用管它了。所以。这就是我们这个阈值。是吧,这就是你计算出来当前啊,你这个请求到当前情况下,你的QPS目前统计的QPS是多少,和他一比。有可能到现在你这个时间窗时间还没有完全到。什么意思呢?简单画一个啊。呃,就是就是。这样一个假设,这就是时间窗是吧?这实际上从那儿到这儿,你现在当前时间已经走到这儿了。这样说吧,已经走到这儿了。哎,那我这个请求在这个时间点上,我这个请求过来了,我这个请求能通过不能啊,我得先看看前面。
12:07
我已经统计了多少了。哎,再配上我的这个数加一块诶。和这个比比他大,哈尔比的小。是吧,你要比他大,那你肯定通不过了,这后续再来的请求肯定都通不过。呃,如果比他小,哎,那这个请求就过了,那那那下一个又来了请求,那这个请求再判断。下课下边再来了,再判断是不是,那就是这样的,那这样的啊,那我们看一下他怎么获取到啊,已经统计的数据了,跟你来。如果那闹是闹,我们刚才说了这个not没有。若没有选择出。Not。是不是说明它没有规则?没有规则,所以就直接返回什么零。
13:00
零表示什么呀?没有统计是吧。啊,若没有选择出not。嗯。说明没有做统计工作。啊,直接返回零,也就是说我到现在我都没有统计了,直接就给你返回零了,那那否则呢,否则我得看一下。G。啊,你是哪种,你你那个值类型。就这里边预知类型是QPS还是线程数。是吧?如果。阈值类型为。线程数啊,则。呃,直接返回当前的。填上数量。是吧?若阈值类型为。
14:02
QPS。则。返回。统计的当前的QPS。这当天的线数直接给返回,直接给返回就行,然后这个。哎,这个。QS给你。这不是统计的吗?这也一样啊,这个也一样。这也一样。日访谈这个是当前的。这个和嘛,返回当前这个和这个值。对吧。那也没啥可说的。我们就跟他。你看这是什么?这个注意啊,这个方法我们现在先不跟,我们后续再讲那个。呃,时间窗算法的时候会详细给大家跟这个。我先告诉大家这是什么。这是。当前时间。
15:00
昌中。呃,统计的。嗯。统计的。通过。请求数量。那这个呢。时间长,长度。就是时间窗。长度,那这俩一除。那不就是QS是不是。嗯,这两个数。相处。计算出的就是轴。Rops。对不对,这不就是计算QS。哎,OK。这这我们看一下这是什么,这就是拿这个规则,我去检验你这个请求能不能通过。是吧,啊,我们刚才就就就跟了这么一大堆啊,跟了这么一大堆单机的。
16:04
然后班级里边,然后呃,我这里边先构建出来这样一个node啊,然后呢,我们看,其实我们直接看它就行了。直接看它就行了,看pass能不能啊,能不能能不能通过,那看你用什么算法,你用的哪种算法,那我们现在用它。是吧,这这个具体不不说了,OKOK。这样的话,我们就把什么把这个。啊,也就是。也就是,呃,我们。这个。这个流控啊,我们详细给大家。解读了。
我来说两句