00:00
前边我们使用send控制台对我们这个请求做了限流,那接下来我们解决两个问题,第一个是我们这个实时监控没有图表数据,第二个就是我们这个请求限流以后返回的数据默认是sent官方返回的,我们可以自定义成自己的数据。那首先针对于我们第一个实时监控的问题,参照center呢官方文档,如果想要做实时监控的这个功能来一直往下翻,这块呢有一个endpoint支持,就说我们现在呢,给每一个spring BOO项目里边只要添加了IQ trar,这个是每一个BOO项目里边都可以有的审计这个模块,呃,这个模块呢,可以实时的统计出我们当前small boot的应用的一些健康状况信息,包括整个请求的调用信息,这些信息,那我们的S就是通过拿到我们boot自己统计的这些信息,最终来做整个数据的实时监控统计的,咱们现在想要解决这个问题呢,第一个我们进来,来到我们这个服务。
01:01
其实以后呢,每一个服务都应该导入,所以我们来说这一块的问题,来每一个服务都来导入,来写一个二,每一个以后我们这个每一个微服务导入这个呢,就是一个标准啊,每一个微服务都导入,导入它的这个信息,审计模块就是这个aqr,那这个模块呢,我们现现在就直接来到po文件里边。那么在秒杀的项目里边,那我们就在sent下边算了,就在这那来直接导入一个叫aator。Spring boot start e来导入它就行了,导入它以后呢,接下来我们还要做的一个操作叫暴露,暴露我们的这些endpoint,就是暴露这些端口,暴露了这些端口呢,相当于我们这些审计信息,别人呢就能访问了,如果是老板呢,暴露是这样暴露的,将management,我们的管理中心,它的这个安全给它关掉,老板呢,这么暴露新版呢,变成了management endpoints,我们的这些端点信息,将web所有的这些端点我们都来暴露,就等于一个芯,那么就直接把这个拿过来就行了,那就是。
02:07
Management的这一块,Web暴露,我们来到的application properties里边来配一下management andpoints web exploreure excclude,我们这exclode呢,我们就来写一个叫芯,注意这一块呢是叫lodeclode,是排除,就是哪些不暴露,我们这个lode呢,就是哪些暴露,那现在所有东西都暴露,所以们现在呢,加了这个两个模块以后。那我们现在再来做一个测试,CTRLC来到我们的这一块,每个服务导入这个,并配置这个,我们现在来启动我们的秒杀模块,保证我们这个秒杀模块访问的时候呢,我们就统计信息,这个统计信息呢看起来也比较明显,我们这个界面呢也比较漂亮,我们来测试一下,先来等一下我的这个秒杀项目启动,把这个控制台清空,来重新测试一下,先来发上几个请求,因为默认一启动呢,我们这个流控规则是在内存里边的项目,我们就清空掉了,那接下来看控制台,我来刷新。
03:07
那么这个实时监控信息呢,我们得稍等一下才能收集到,好这一块呢,就是我们这个信息,那么现在每秒通过的QPS这一块呢,我们都有,我们可以给他在这里来添加流控规则,直接新增流控规则们请求的资源名,那就是请求名直接一复制,那么在这儿来每秒限制一个点一个新增,然后我们来刷新一下,那这样呢,我们这个流控就上来了,而且呢,现在一流控以后,默认给的返回数据是这样,那希望呢,全系统如果返回的是接层数据都返回我们这个R对象有错误状态码等等这些信息,那么现在就来自定义我们的这个返回数据,第三个那这个自定义森的这个流控返回。这个自定义呢,我们专门来写上一个配置,那么来到这个配置里边来写一个sel con。就叫鼓励,没有我们这个秒杀服,秒杀服秒杀的这个sentel conig,好,我们先来说它是一个configuration,这是一个配置类,那我们想要配置自定义的返回也非常简单,在spring boot里边呢,给我们直接提供了一个web call bank manager,诶这个不是spring的,这是我们这个S,我们提供了这个像web的这个回调的管理器,然后呢,我们设置一个叫URL block,看到了就是我们这个请求,如果被限制了以后的这个处理器,这个处理器呢,我们只需要实现这个接口,实现一个方法我们就可以了,那么现在就来到这儿,那么要做这个呢,我们就在这个配置类初始化的时候,我们就可以来做public行,这个有一个构造器,我们在构造它的时候呢,直接把这个规则就一传就行了,我们有一个叫web call bank web call bank manager,注意这是我们这个certain楼的。如果我们。
04:58
只用Z5提供的web flux编程,那就得用下边,你用上边在默认的这种方式有一个叫set URL block handle了,那这就是当我们这个阻塞了以后,被限制了以后,我们怎么办?点进来传一个呢,URL block handle了,点进来这呢是一个接口,我们直接来实现这个方法就行了,你有一个URL block handler。
05:22
来创建出它的实现,匿名实现,来加上添加一个实现方法。走。那像这个方法呢,我们就直接来定义返回,那这个返回里边,那我们就整简单一点,我们直接有一个R对象,我这直接有一个R点一个,我们可以自定一个叫error,我们给他返回一个状态码,比如我们全系统都来规定上一个这个状态码,我们在这儿来找到我们这个异常里边,业务状态码里边,业务状态码里边呢,我们这个通用的。001的这一块,我们再来多规定上一个状态码,比如有一个001,我们现在呢,002 002呢,就是比如我们就是太多请求呢,被阻塞住了,我们就叫too many request,好,我们现你呢发了太多请求。
06:08
请求流量过大,好,这是我们这个阻塞,好那现在呢,来到这儿,那我们这个arrow呢,就返回我们这个杯子扣的枚举,点一个too many,我们太多请求这个点一个get go,我们错误码呢就是这个,然后错误消息呢,我们也加过来这个too many啊加上这个,那来到我们这个配置,这现在呢,就是太多请求,我们来返回一个自定义的数据base code,点一个to many,太多请求点一个get message,好,我们准备了一个自定义的R,然后我们来把它返回出去就行了,来这个R对象呢,来看一下他呢帮我们来返回一个R对象,我们要写出去的肯定是一个Jason,所以我们直接response,点一个get writer,我们来进行一个write,把这个对象写出去,我直接杰森点一个to,杰森,String来写一个字底的对象就行了。A,我们往前一放,好,现在呢,我们添加了一个自定义的阻塞返回方法,我们来重新测试一下。
07:08
把我们这个second kill秒杀项目来重新启动,来看,当我们这个流量控制阻塞了以后呢,能不能返回我们自己的数据,那等待我们购物车服务的启动,我们这个服务呢,现在启动成功,好,我们把它清空掉,我们来重新刷新一下,默认呢,还是没有限定效果,我们稍等一下。服务还没有启动稳定好,现在呢,数据过来,我们现在加上一个限流,我们来重新刷新一下,咱们这个实时监控里边肯定一会儿会采集到数据,我们在这儿流控设置,我们直接从它的触点链路里边写流,这样更方便们点一个流控,那现在我们还是单击阈值,我们来写一个一直接给它返回失败就行了,我点一个新增,我们看一下现在失败的效果来,F5F5好,现在重新一刷新以后呢,那就过来了,Message嗡嗡嗡这块呢是乱码,我们在这来设置一个响应编码就行了,Response,点一个set,这有一个character encoding,我们这个coding呢,我们就来写上一个utf杠八,并且我们这个内容类型,我们也可以写上,点一个set c type内容类型。
08:13
那这个内容类型呢,是application JS,好,我们现在来重新启动,那么返回的这个数据呢,就是我们自定义的数据了,包括我们这个控制台,我们整个的实时监控效果肯定也是有的,我们这个服务呢,正在启动,我来等待一下它的整个启动,好,现在启动完成,我来重新刷新。默认呢没有流控效果,然后我们在这来填上我们的流控效果,来到触点电路里边,这样填的更快,我就来控制住一走,现在看我们这个控住以后好请求流量过大,我们现在呢就已经数据过来了。
我来说两句