00:00
好,同学们,接下来我们讲一下生熔断和限流框架的下一个知识点,热点T限流,注意。前面。流控规则我们讲过了,也是限流的一种,但是这大家请看,人家是单独撸出来叫热点规则,看到没有?这一块的话。点一下。资源名,注意限流模式仅支持QPS啊。参数索引,单击阈值统计窗口,时长高级选项等等,那么这个就是我们的。热点规则的一个界面,好,那接下来提前说,这个非常重要,你看都加把火对吧?是我个人认为是限流规则里面非常实用和常用的一个功能点,请同学们务必要在后续的练习当中用上,下面请跟着我走,老规矩。咱们先聊聊它是什么。
01:03
打开我们的图片,刚才已经看到,那么。官网已经提前打开。他干什么呢?热点参数限流。就是我们的hot key,何为热点?经常访问的数据,很多时候我们希望某个热点数据中访问频次最高的top n或者top k的数据对其访问,比如说商品ID为参数,统计一段时间内最长购买商品ID,并进限购用户ID统计一段时间内频繁访问用户ID进行限制,假设这样啊,比如说比方说目前最重要的热点新闻是不是武汉的新冠肺炎,那假如啊,某一个时间段它点击量太大了,我们对某一瞬间,某一时刻它的点击量来进行一下限流。OK,那么对某一个参数更加具体的进行精准的打击和限流,热点参数限流会统计传入参数中的热点参数,并根根据配置的限流阈值与模式对包含热点参数的资源调用进行限流。假设我现在要传。
02:14
一个地址。现在HTP。冒号,比方说local host 8401这么一个地址,假设这个地址我们呢,就叫。Payment,或者叫这个qua吧。那么现在。我如果带着一个参数啊,是P1的,那不好意思啊,假设现在这个P1带有这种参数啊,我就认为这条链路是查询比较热点,那么带有P1的我帮你限流,但是如果是这条参数带有P2的不限,带有P3的不限,听懂了吗?所以说根据它传递和带进来的某一个具体参数,我们来进行限流,好实为热点限流,OK,那么这块请同学们跟着我来进行进一步的学习和配置。那接下来我们先。
03:12
一边。要讲新知识啊,一边继续复习一下,以前唠过的,快快的过一遍。以前呢,我们呢,是不是讲过一种东西叫兜底的方法,那同学们啊,我们这儿来看一眼。分为系统默认的和客户自定义的两种,都说过吧,之前的case啊,限流出问题了以后,我们用的是申系统的默认提示,我相信这个同学们已经很熟了,那我们能不能自定义类似于historys,某个方法出问题了就找对应的兜底的降级方法,结论是可以的。下面我们俩先最简单的,最粗浅的。混个眼熟,学一个我们的新的注解标签,叫sentin resource,可以这么变相的推演过来,它等同于我们之前学过的historys command。所以说前面我为什么要讲豪猪哥S详细讲你会发现干嘛后面的技术你相信我一定是去借鉴,或者叫超前面框架的作业和他的思想,那换个标签继续用。
04:23
O了,所以说我们现在就先混个眼熟啊,同学们,这块我们先用,后面呢,我们专门有一章来讲,这个你就先给我明白,这货跟这货基本上是相似的,相似度高达99%,好,那么接下来我们呢,实行代码级别的整理。首先我们这个热点限流啊,它的源码呢,大家有兴趣呢,去看看这个block exception它把它这个热点限流出的事呢,用这个类来进行了包装,那么什么意思呢?啊同学们,因为啊这个官方文档,那么由于我们的时间有限,同学们呢,有兴趣可以下去看一下啊。
05:04
比方说就是这个,请看catch是不是叫做block exception,那么兄弟们跟我这个block exception是不是一回事,那其实啊,整体的这个身体呢,它的。架构和框架就是try catch finally3段一句话,根据你传入的资源名称,什么叫传入的资源名称呢?我们。原来讲过这是不是有个叫资源名,如果针对于这一个资源名啊,它全部的内容通过你的逻辑合乎合乎我的这个。的限流规则和配置放行,否则catch block就跑到我们的block exception,把你的问题给我打出来再说直白一点。这段话之所以打出来,也就是因为前面我们比方说我们的单机。流控阈值啊,每一秒钟的QPS超过了一以后,那么从TRY的正常途径将会跳到catch异常的途径,整体而言,它的限流的思想就是这么一回事。
06:09
好,那么现在回到我们的热点T,那么代码级别我们呢,写一个什么呢?来找到我们的8401,我先关掉啊,我们新写一个方法,现在那。嗯,叫帕卡。String,然后叫test hot key,兄弟们,这个是不是叫热点限流,然后好request。Per兄弟们,这个没有任何问题吧?啊,Value等于PE,假设这个就是我们传的第一个参数,它并不是一个必须的。OK,那么这个呢,在VC里面呢,都讲过,那么OK string,兄弟们没有任何问题吧。好,那么过来吧,那么这货直接再来一个P2。
07:01
OK,那么这块相当于说我们这个链接地址啊,待会儿要访问要传。两个参数,一个叫P1,一个叫P2,那么我们待会假设设置P1这个参数叫hot key热点对它来进行一定的限流和监控,好,那么这个时候我们老规矩getting map,那这个不废不废话,这些呢,都很简单啊,Test。或T,那么这个是要反问了我们的这个,那么这个时候反问我们呢,也很简单,就出个什么东东呢。就反回一句话。如果你成功了,我们就是test或POK,好,那接下来这点代码没什么问题,那杨哥你不是说有这么个东西呢?好,兄弟们走起啊,现在开始我们加一点新东西,叫sent resource,然后这个里面value要注意。上面这个getting mapping这个是我们的rest地址啊,听懂了吧,加着一个左斜杠,那么在这块你可以叫ABC什么的都可以,只要名称为一,那么一般我们是跟d mapping拷贝过来一样,区别就是这有没有斜杠,明白了吗?
08:16
清楚啊,那么好,当然我说过了,你这叫001。ABC都可以,只要名称一样,名称为一。但是这我们为了。编码的统一和规范。这个代表rise地址啊,这个代表它那什么意思啊,直截了当的说,就说待会儿我们做限流的时候,甚至假设添加资源名,如果是添了个斜线那个,那么就是从rest。接口地址那来的,如果说没有斜线名是这么一个名词的,就说明我们用的是它来做唯一标识,好这两个是121222221的事,那么好。接下来学一个新的属性,叫blocked handler blocked,注意看源码。
09:02
这块是不是叫block的exception,意思就是说如果我们的某一个链接地址啊,违背了我们在控制台的热点规则,就是说我们配的你没有遵守,那么接下来就需要有一个block exception来处理。这么说听懂,那么假设啊这个呢。写少一点叫test或者key,那么过了这是不是也有一个兜底的方法,那么这个兜底的方法我们呢,方法头几乎是一样,就叫public。String,然后这块呢。过来处理,如果说违背了我们sentin的配置规则的,那哪个方法来兜底,就由block handle德拉指定的这个方法,那么好,基本上它的方法头跟我们的前面的一样,但是请加上一个叫block exception。
10:06
Block exception这一波弟兄们能跟上。然后这块我们呢,直接跟前面的一样。告诉你这个时我们的deal或者key。OK,那么来到这就说明是走到了我们的这个处理热点handle的这么一个方法,兜底的一个方法,兄弟们能跟上,那么切记啊,我们这。的默认提示。都是blocked by sentin no flow limiting,好,那么这个就是我们的做好了一个热点T的一个代码,这一有这么一个新的注解标签,二唯一名字啊,三告诉你sent resource,这个标签就是对这个控制台负责,如果说我在这个控制台里面配的规则你违背了,那么下面出事了,就要有一个兜底的方法,就这么简单,能跟上,好,那接下来。
11:12
这波完成以后,接下来干我们的配置啊,那么这个配置啊就有讲究了,同学们。差点忘了,在我们配置之前,我们刚把它改好,那么现在我们是不是要把我们的8401启动啊,好,那么等它启动哈,那接下来待会儿呢,我们就来看看这个热点规则啊,它是干什么。先读一遍,大家请看资源名,限流模式仅支持QPS第二个参数索引请填入传入的热点参数索引,从零开始。单击句值统计时长窗口,好,那等它重新启动,那接下来应该启动完成了,我们先来访问,现在我们这儿是不是有个东西叫test care,好,那么这一块啊,同学们,我们先来反问。
12:05
是不是test hot key,注意,因为杨哥为了测试方便,我这两个参数填的都是false,你可传可不传,明白了吗?那么这是一种地址,第二种地址是什么概念呢?假设啊,PE。等于A。PR等于B,兄弟们请看这个是不是也是正常的,那么注意说明我现在这个test或者K这个。屁股后面尾巴就挂了两个,一个是参数叫P1,一个参数叫P2,这一步能跟上第二个从下标索引的位置,这个是不是叫第零个,这个是不是叫第一个参数啊,OK,所以我们现在来进行配置啊,我们的配置呢,就按照这么一个规则,一、资源名称,我们现在用的是sentin resource OK,只有把这个名称配到这儿,人家sent才会来找你,好。
13:00
第二个限流模式仅支持QPS,注意,请看它说参数索引传入的热点参数索引从零开始,那么现在我们第零个参数是不是就是我们这个PE?那么我们要干什么呢?我们就限流第零个参数就是我们P1预值是几一,统计时是几一?好,现在OK,就配完了,那杨哥说人话,我没发现有什么区别呀,那么下面来反问,意思就是说只要你配置完成以后。兄弟们。我们呢,来测试一下啊,我们这个配置啊,现在是不是都已经参数索引是零没问题了吧?好这点开了以后同学们笔记上两种效果,那么我先不点开,弟兄们先跟着我看看啊。各位亲,现在呢,我们配置完成。第零个参数一直是一同一时长一保存,OK,那么下面请看啊,我现在就带着这么一个一,如果说我现在一回车。
14:06
一秒钟一下没问题吧,再刷一下没问题吧。这个时候我突然。提高我们的点击率超过QPS时间请大家看第。Test或key是不是这个哭的这个笑脸,哭的这个表情包就出来了,说明什么?如果你的第零个角标的第一个参数超过我们设定的KPS时间,马上就给你报错,所以说我们在这儿得到的结论就是。三的resource,你配的这个资源名称test t,兜底的方法是这个,这个所谓的兜底意思就是说只要你用了这个,你现在的程序运行违背了我们在申请的控制台里面设设置的规则,那么将会报错,报错了以后将会按照你的设定有这么一个指定的方法替你兜底明白。下面第一个参数就是刚才我们的那个P,只要QPS超过了每秒钟一次,马上降级处理,用了我们自己定义的,很简单,兄弟们,这个表情包哭的这个表情包是不是用了我们自定义的?
15:12
OK,那第二种我们讲了,那么假设第一种呢,什么意思啊,兄弟们请看对比。我把这个block的handler剃掉,那么大家看看我们会产生什么样的结果和效果,回到我们这儿,我们把这个拿掉。OK。还是配了我们的设定的规则,现在按照我们的规矩就是第一个参数啊,第零角标是零的P1这个参数啊,如果点击率超过每秒钟一次啊,QPS啊,马上。就被热点限流了,现在打出来的表情包是我们自定义的,可是现在杨哥故意把它拿掉,那么这个时候同学们请看我现在啊,一秒钟点一下应该是正确的,那么等了这么半天,它后台应该正常启动了,我刷新,大家请看是不是回到我们正常的了,这个时候我猛的点。
16:08
什么情况?报道了a page错误页面清楚了吗?所以说我们这儿如果说你用了。热点规则的这个线里,请同学们一定要用第二种,明白了吗?如果你用第一种异常达到了前台用用户看到了这么一个所谓的。A page这样是不是不太友好啊?所以说它的意思就是你违背了你在三控制台上面的热点T的限流规则,你要给我个兜底的方法,这个兜底的方法就叫block的handle德拉这么个。句柄来引用,如果你配了,我就用你主人你写好的这个,如果主人你没有配置啊,那不好意思啊,那我呢,这也有点翻脸,直接给你打I配置了,明白,所以说这个就是我们的热点T的相关配置,那接下来同学们我们再看看其他的测试啊,什么意思呢?
我来说两句